/*++ Copyright (c) 1997 Microsoft Corporation Module Name : logobj.cxx Abstract: Log COM Object Author: Johnson Apacible (JohnsonA) 02-April-1997 --*/ #include "precomp.hxx" #include "comlog.hxx" CInetLogInformation::CInetLogInformation( VOID ): m_refCount ( 0), m_szClientAddress ( NULL), m_szServerAddress ( NULL), m_szUserName ( NULL), m_szOperation ( NULL), m_szTarget ( NULL), m_szParameters ( NULL), m_szHTTPHeaders ( NULL), m_szVersion ( NULL), m_cbSiteName ( 0), m_cbComputerName ( 0), m_cbServerAddress ( 0), m_cbClientAddress ( 0), m_cbUserName ( 0), m_cbOperation ( 0), m_cbTarget ( 0), m_cbParameters ( 0), m_cbHTTPHeaders ( 0), m_cbVersion ( 0), m_dwPort ( 0), m_msProcessingTime ( 0), m_dwWin32Status ( 0), m_dwProtocolStatus ( 0), m_bytesSent ( 0), m_bytesRecv ( 0) { m_szSiteName[0] = '\0'; m_szComputerName[0] = '\0'; } // CInetLogInformation::CInetLogInformation CInetLogInformation::~CInetLogInformation( VOID ) { } // CInetLogInformation::~CInetLogInformation ULONG CInetLogInformation::AddRef( VOID ) { InterlockedIncrement( &m_refCount ); return(m_refCount); } // CInetLogInformation::AddRef ULONG CInetLogInformation::Release( VOID ) { InterlockedDecrement( &m_refCount ); return(m_refCount); } // CInetLogInformation::Release HRESULT CInetLogInformation::QueryInterface( REFIID riid, VOID **ppObj ) { if ( riid == IID_IUnknown || riid == IID_IINETLOG_INFORMATION ) { *ppObj = (CInetLogInformation *)this; AddRef(); return(NO_ERROR); } else { return(E_NOINTERFACE); } } // CInetLogInformation::QueryInterface #define RETURN_STRING_INFO( _pBuf, _pcbBuf, _pInfo, _cbInfo ) { \ if ( (_pBuf) != NULL ) { \ \ if ( *(_pcbBuf) >= (_cbInfo) ) { \ CopyMemory( _pBuf, _pInfo, _cbInfo ); \ } else { \ *(_pcbBuf) = (_cbInfo); \ return(NULL); \ } \ } \ *(_pcbBuf) = (_cbInfo); \ return(_pInfo); \ } LPSTR STDMETHODCALLTYPE CInetLogInformation::GetSiteName( IN PCHAR pszSiteName, IN PDWORD pcbSize ) { RETURN_STRING_INFO( pszSiteName, pcbSize, m_szSiteName, m_cbSiteName); } // GetSiteName LPSTR STDMETHODCALLTYPE CInetLogInformation::GetComputerName( IN PCHAR pszComputerName, IN PDWORD pcbSize ) { RETURN_STRING_INFO( pszComputerName, pcbSize, m_szComputerName, m_cbComputerName); } // GetComputerName LPSTR STDMETHODCALLTYPE CInetLogInformation::GetClientHostName( IN PCHAR pszClientHostName, IN PDWORD pcbSize ) { RETURN_STRING_INFO( pszClientHostName, pcbSize, m_szClientAddress, m_cbClientAddress); } // GetClientHostName LPSTR STDMETHODCALLTYPE CInetLogInformation::GetClientUserName( IN PCHAR pszClientUserName, IN PDWORD pcbSize ) { RETURN_STRING_INFO( pszClientUserName, pcbSize, m_szUserName, m_cbUserName); } // GetClientUserName LPSTR STDMETHODCALLTYPE CInetLogInformation::GetServerAddress( IN PCHAR pszServerAddress, IN PDWORD pcbSize ) { RETURN_STRING_INFO( pszServerAddress, pcbSize, m_szServerAddress, m_cbServerAddress); } // GetServerIPAddress LPSTR STDMETHODCALLTYPE CInetLogInformation::GetOperation( IN PCHAR pszOperation, IN PDWORD pcbSize ) { RETURN_STRING_INFO( pszOperation, pcbSize, m_szOperation, m_cbOperation); } // GetOperation LPSTR STDMETHODCALLTYPE CInetLogInformation::GetTarget( IN PCHAR pszTarget, IN PDWORD pcbSize ) { RETURN_STRING_INFO( pszTarget, pcbSize, m_szTarget, m_cbTarget); } // GetTarget LPSTR STDMETHODCALLTYPE CInetLogInformation::GetParameters( IN PCHAR pszParameters, IN PDWORD pcbSize ) { RETURN_STRING_INFO( pszParameters, pcbSize, m_szParameters, m_cbParameters); } // GetParameters LPSTR STDMETHODCALLTYPE CInetLogInformation::GetExtraHTTPHeaders( IN PCHAR pszHTTPHeaders, IN PDWORD pcbSize ) { RETURN_STRING_INFO( pszHTTPHeaders, pcbSize, m_szHTTPHeaders, m_cbHTTPHeaders); } // GetExtraHTTPHeaders DWORD STDMETHODCALLTYPE CInetLogInformation::GetTimeForProcessing( VOID ) { return(m_msProcessingTime); } // GetTimeForProcessing DWORD STDMETHODCALLTYPE CInetLogInformation::GetPortNumber( VOID ) { return(m_dwPort); } // GetPortNumber DWORD STDMETHODCALLTYPE CInetLogInformation::GetBytesSent( VOID ) { return(m_bytesSent); } // GetBytesSent DWORD STDMETHODCALLTYPE CInetLogInformation::GetBytesRecvd( VOID ) { return(m_bytesRecv); } // GetBytesRecvd DWORD STDMETHODCALLTYPE CInetLogInformation::GetWin32Status( VOID ) { return(m_dwWin32Status); } // GetWin32Status DWORD STDMETHODCALLTYPE CInetLogInformation::GetProtocolStatus( VOID ) { return(m_dwProtocolStatus); } // GetProtocolStatus LPSTR STDMETHODCALLTYPE CInetLogInformation::GetVersionString( IN PCHAR pszVersionString, IN PDWORD pcbSize ) { RETURN_STRING_INFO( pszVersionString, pcbSize, m_szVersion, m_cbVersion); } //GetVersionString CHAR szNULL[] = ""; CHAR szDotDot[] = "..."; VOID CInetLogInformation::CanonicalizeLogRecord( IN INETLOG_INFORMATION * pInetLogRecord, IN LPCSTR pszSiteName, IN LPCSTR pszComputerName, IN BOOL fDefault ) { m_szClientAddress = pInetLogRecord->pszClientHostName; if ( m_szClientAddress == NULL ) { m_szClientAddress = szNULL; m_cbClientAddress = 0; } else { m_cbClientAddress = pInetLogRecord->cbClientHostName; } m_szOperation = pInetLogRecord->pszOperation; if ( m_szOperation == NULL ) { m_szOperation = szNULL; m_cbOperation = 0; } else { m_cbOperation = pInetLogRecord->cbOperation; if ( m_cbOperation > MAX_LOG_OPERATION_FIELD_LEN ) { m_cbOperation = MAX_LOG_OPERATION_FIELD_LEN; } } m_szTarget = pInetLogRecord->pszTarget; if ( m_szTarget == NULL ) { m_szTarget = szNULL; m_cbTarget = 0; } else { m_cbTarget = pInetLogRecord->cbTarget; if ( m_cbTarget > MAX_LOG_TARGET_FIELD_LEN ) { m_cbTarget = MAX_LOG_TARGET_FIELD_LEN; } } m_dwProtocolStatus = pInetLogRecord->dwProtocolStatus; m_bytesSent = pInetLogRecord->dwBytesSent; m_bytesRecv = pInetLogRecord->dwBytesRecvd; if ( fDefault ) { return; } strcpy( m_szSiteName, pszSiteName ); strcpy( m_szComputerName, pszComputerName ); m_cbSiteName = (DWORD)strlen(m_szSiteName); m_cbComputerName = (DWORD)strlen(m_szComputerName); m_szUserName = pInetLogRecord->pszClientUserName; if ( m_szUserName == NULL ) { m_szUserName = szNULL; m_cbUserName = 0; } else { m_cbUserName = (DWORD)strlen(m_szUserName); if ( m_cbUserName > MAX_LOG_USER_FIELD_LEN ) { m_cbUserName = MAX_LOG_USER_FIELD_LEN; } } // // If server IP is empty, then set it the first time // m_szServerAddress = pInetLogRecord->pszServerAddress; if ( m_szServerAddress == NULL ) { m_szServerAddress = szNULL; m_cbServerAddress = 0; } else { m_cbServerAddress = (DWORD)strlen(m_szServerAddress); } if ( pInetLogRecord->pszParameters == NULL ) { m_szParameters = szNULL; m_cbParameters = 0; } else { m_szParameters = pInetLogRecord->pszParameters; m_cbParameters = (DWORD)strlen(m_szParameters); if ( m_cbParameters > MAX_LOG_PARAMETER_FIELD_LEN ) { m_szParameters = szDotDot; m_cbParameters = 3; } } if ( pInetLogRecord->pszHTTPHeader == NULL ) { m_szHTTPHeaders = szNULL; m_cbHTTPHeaders = 0; } else { m_szHTTPHeaders = pInetLogRecord->pszHTTPHeader; m_cbHTTPHeaders = pInetLogRecord->cbHTTPHeaderSize; } if ( pInetLogRecord->pszVersion == NULL ) { m_szVersion = szNULL; m_cbVersion = 0; } else { m_szVersion = pInetLogRecord->pszVersion; m_cbVersion = (DWORD)strlen(m_szVersion); } m_msProcessingTime = pInetLogRecord->msTimeForProcessing; m_dwWin32Status = pInetLogRecord->dwWin32Status; m_dwPort = pInetLogRecord->dwPort; return; } // CanonicalizeLogRecord