128 lines
3.5 KiB
C++
128 lines
3.5 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) 1998, Microsoft Corp. All rights reserved.
|
|
//
|
|
// FILE
|
|
//
|
|
// account.h
|
|
//
|
|
// SYNOPSIS
|
|
//
|
|
// Declares the class Accountant.
|
|
//
|
|
// MODIFICATION HISTORY
|
|
//
|
|
// 08/05/1998 Original version.
|
|
// 01/19/1999 Add PKT_ACCESS_CHALLENGE.
|
|
// 05/18/1999 Store computerName as UTF-8.
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _ACCOUNT_H_
|
|
#define _ACCOUNT_H_
|
|
|
|
#include <lmcons.h>
|
|
|
|
#include <logfile.h>
|
|
#include <logschema.h>
|
|
|
|
#include <iastl.h>
|
|
#include <iastlutl.h>
|
|
using namespace IASTL;
|
|
|
|
#include "resource.h"
|
|
|
|
class FormattedBuffer;
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// CLASS
|
|
//
|
|
// Accountant
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
class ATL_NO_VTABLE Accountant :
|
|
public IASRequestHandlerSync,
|
|
public CComCoClass<Accountant, &__uuidof(Accounting)>
|
|
{
|
|
public:
|
|
|
|
IAS_DECLARE_REGISTRY(Accounting, 1, IAS_REGISTRY_AUTO, IASTypeLibrary)
|
|
IAS_DECLARE_OBJECT_ID(IAS_PROVIDER_MICROSOFT_ACCOUNTING)
|
|
|
|
Accountant() throw ();
|
|
|
|
//////////
|
|
// IIasComponent
|
|
//////////
|
|
STDMETHOD(Initialize)();
|
|
STDMETHOD(Shutdown)();
|
|
STDMETHOD(PutProperty)(LONG Id, VARIANT* pValue);
|
|
|
|
protected:
|
|
|
|
// Main request processing routine.
|
|
virtual IASREQUESTSTATUS onSyncRequest(IRequest* pRequest) throw ();
|
|
|
|
// Packet types.
|
|
enum PacketType
|
|
{
|
|
PKT_UNKNOWN = 0,
|
|
PKT_ACCESS_REQUEST = 1,
|
|
PKT_ACCESS_ACCEPT = 2,
|
|
PKT_ACCESS_REJECT = 3,
|
|
PKT_ACCOUNTING_REQUEST = 4,
|
|
PKT_ACCESS_CHALLENGE = 11
|
|
};
|
|
|
|
// Append a record to log file.
|
|
void appendRecord(
|
|
IASRequest& request,
|
|
PacketType packetType,
|
|
FormattedBuffer& buffer,
|
|
const SYSTEMTIME& localTime
|
|
) const throw (_com_error);
|
|
|
|
// Signature of a record formatter.
|
|
typedef void (__stdcall Accountant::*Formatter)(
|
|
IASRequest& request,
|
|
FormattedBuffer& buffer,
|
|
const SYSTEMTIME& localTime,
|
|
PATTRIBUTEPOSITION firstPos,
|
|
PATTRIBUTEPOSITION lastPos
|
|
) const throw (_com_error);
|
|
|
|
// Formatter for ODBC records.
|
|
void __stdcall formatODBCRecord(
|
|
IASRequest& request,
|
|
FormattedBuffer& buffer,
|
|
const SYSTEMTIME& localTime,
|
|
PATTRIBUTEPOSITION firstPos,
|
|
PATTRIBUTEPOSITION lastPos
|
|
) const throw (_com_error);
|
|
|
|
// Formatter for W3C records.
|
|
void __stdcall formatW3CRecord(
|
|
IASRequest& request,
|
|
FormattedBuffer& buffer,
|
|
const SYSTEMTIME& localTime,
|
|
PATTRIBUTEPOSITION firstPos,
|
|
PATTRIBUTEPOSITION lastPos
|
|
) const throw (_com_error);
|
|
|
|
BOOL logAuth; // Log authentication requests ?
|
|
BOOL logAcct; // Log accounting requests ?
|
|
BOOL logInterim; // Log interim accounting requests ?
|
|
|
|
LogFile log; // Log file.
|
|
LogSchema schema; // Log schema.
|
|
|
|
Formatter format; // Pointer to member function being used for formatting.
|
|
|
|
// Cached computername in UTF-8.
|
|
CHAR computerName[MAX_COMPUTERNAME_LENGTH * 3];
|
|
DWORD computerNameLen;
|
|
};
|
|
|
|
#endif // _ACCOUNT_H_
|