Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//#--------------------------------------------------------------
//
// File: reportevent.cpp
//
// Synopsis: Implementation of CReportEvent class methods
// The class is responsible for logging the
// appropriate events
//
//
// History: 1/29/98 MKarki Created
//
// Copyright (C) 1997-98 Microsoft Corporation
// All rights reserved.
//
//----------------------------------------------------------------
#include "radcommon.h"
#include "radpkt.h"
#include "reportevent.h"
#include "iasradius.h"
#include "iasutil.h"
#define NUMBER_OF_EVENT_STRINGS 2
//
// this array holds the information to map RADIUSLOGTYPEs to
// IAS logs
//
static DWORD g_ReportEvent [MAX_RADIUSLOGTYPE +1][MAX_PACKET_TYPE +1];
//++--------------------------------------------------------------
//
// Function: CReportEvent
//
// Synopsis: This is CReportEvent class constructor
//
// Arguments: NONE
//
// Returns: NONE
//
//
// History: MKarki Created 1/29/98
//
//----------------------------------------------------------------
CReportEvent::CReportEvent ( VOID ) :m_bLogMalformed (FALSE), m_bLogAcct (FALSE), m_bLogAuth (FALSE), m_bLogAll (FALSE) {
//
// initalize the global array
//
g_ReportEvent[RADIUS_DROPPED_PACKET][ACCESS_REQUEST] = IAS_EVENT_RADIUS_AUTH_DROPPED_PACKET;
g_ReportEvent[RADIUS_DROPPED_PACKET][ACCOUNTING_REQUEST] = IAS_EVENT_RADIUS_ACCT_DROPPED_PACKET;
g_ReportEvent[RADIUS_MALFORMED_PACKET][ACCESS_REQUEST] = IAS_EVENT_RADIUS_AUTH_MALFORMED_PACKET;
g_ReportEvent[RADIUS_MALFORMED_PACKET][ACCOUNTING_REQUEST] = IAS_EVENT_RADIUS_ACCT_MALFORMED_PACKET;
g_ReportEvent[RADIUS_INVALID_CLIENT][ACCESS_REQUEST] = IAS_EVENT_RADIUS_AUTH_INVALID_CLIENT;
g_ReportEvent[RADIUS_INVALID_CLIENT][ACCOUNTING_REQUEST] = IAS_EVENT_RADIUS_ACCT_INVALID_CLIENT;
g_ReportEvent[RADIUS_LOG_PACKET][ACCESS_REQUEST] = IAS_EVENT_RADIUS_AUTH_ACCESS_REQUEST;
g_ReportEvent[RADIUS_LOG_PACKET][ACCESS_ACCEPT] = IAS_EVENT_RADIUS_AUTH_ACCESS_ACCEPT;
g_ReportEvent[RADIUS_LOG_PACKET][ACCESS_REJECT] = IAS_EVENT_RADIUS_AUTH_ACCESS_REJECT;
g_ReportEvent[RADIUS_LOG_PACKET][ACCOUNTING_REQUEST] = IAS_EVENT_RADIUS_ACCT_REQUEST;
g_ReportEvent[RADIUS_LOG_PACKET][ACCOUNTING_RESPONSE] = IAS_EVENT_RADIUS_ACCT_RESPONSE;
g_ReportEvent[RADIUS_LOG_PACKET][ACCESS_CHALLENGE] = IAS_EVENT_RADIUS_AUTH_ACCESS_CHALLENGE;
g_ReportEvent[RADIUS_BAD_AUTHENTICATOR][ACCESS_REQUEST] = IAS_EVENT_RADIUS_AUTH_BAD_AUTHENTICATOR;
g_ReportEvent[RADIUS_BAD_AUTHENTICATOR][ACCOUNTING_REQUEST] = IAS_EVENT_RADIUS_ACCT_BAD_AUTHENTICATOR;
g_ReportEvent[RADIUS_UNKNOWN_TYPE][ACCESS_REQUEST] = IAS_EVENT_RADIUS_AUTH_UNKNOWN_TYPE;
g_ReportEvent[RADIUS_UNKNOWN_TYPE][ACCOUNTING_REQUEST] = IAS_EVENT_RADIUS_ACCT_UNKNOWN_TYPE;
g_ReportEvent[RADIUS_NO_RECORD][ACCESS_REQUEST] = IAS_EVENT_RADIUS_AUTH_DROPPED_PACKET;
g_ReportEvent[RADIUS_NO_RECORD][ACCOUNTING_REQUEST] = IAS_EVENT_RADIUS_ACCT_NO_RECORD;
} // end of CReportEvent class constructor
//++--------------------------------------------------------------
//
// Function: ~CReportEvent
//
// Synopsis: This is CReportEvent class destructor
//
// Arguments: NONE
//
// Returns: NONE
//
//
// History: MKarki Created 1/29/98
//
//----------------------------------------------------------------
CReportEvent::~CReportEvent ( VOID ) {
} // end of CReportEvent class constructor
//++--------------------------------------------------------------
//
// Function: SetLogType
//
// Synopsis: This is CReportEvent class responsible
// for setting the logging type
//
// Arguments:
// [in] DWORD - log id
// [in] BOOL - log value
//
// Returns: VOID
//
// History: MKarki Created 1/29/98
//
//----------------------------------------------------------------
VOID CReportEvent::SetLogType ( DWORD dwLogSwitches, BOOL bLogValue ) { return;
} // end of CReportEvent::SetLogType method
//++--------------------------------------------------------------
//
// Function: Process
//
// Synopsis: This is CReportEvent class responsible for
// actually logging the event to the Audit channel
//
// Arguments: NONE
//
// Returns: NONE
//
//
// History: MKarki Created 1/29/98
//
//----------------------------------------------------------------
VOID CReportEvent::Process ( RADIUSLOGTYPE radLogType, PACKETTYPE radPacketType, DWORD dwDataSize, DWORD dwIPAddress, LPCWSTR szInString, LPVOID pRawData ) { HRESULT hr = S_OK; LPCWSTR pStrArray[NUMBER_OF_EVENT_STRINGS]; WCHAR wszIPAddress[16]; BOOL bLogPacket = FALSE;
//
// the values should be in array range
//
_ASSERT (MAX_RADIUSLOGTYPE >= radLogType);
//
// as we might get incorrect values for packettype,
// we need to correct this
//
if (MAX_PACKET_TYPE < radPacketType) { return;}
//
// get the IP address in dotted octed format
// and put in as a string
//
ias_inet_htow(dwIPAddress, wszIPAddress);
//
// put the strings in the array
//
pStrArray[0] = wszIPAddress; pStrArray[1] = szInString;
//
// log the event now
//
hr = ::IASReportEvent ( g_ReportEvent [radLogType][radPacketType], (DWORD) NUMBER_OF_EVENT_STRINGS, dwDataSize, pStrArray, pRawData ); if (FAILED (hr)) { IASTracePrintf ( "Unable to report event from Radius Component" ); } } // end of CReportEvent::Process method
|