230 lines
8.1 KiB
C
230 lines
8.1 KiB
C
|
//****************************************************************************
|
||
|
//
|
||
|
// Module: ULS.DLL
|
||
|
// File: culs.h
|
||
|
// Content: This file contains the ULS object definition.
|
||
|
// History:
|
||
|
// Wed 17-Apr-1996 11:18:47 -by- Viroon Touranachun [viroont]
|
||
|
//
|
||
|
// Copyright (c) Microsoft Corporation 1996-1997
|
||
|
//
|
||
|
//****************************************************************************
|
||
|
|
||
|
#ifndef _CILS_H_
|
||
|
#define _CILS_H_
|
||
|
|
||
|
#include "connpt.h"
|
||
|
#include "spserver.h"
|
||
|
|
||
|
class CIlsServer;
|
||
|
|
||
|
//****************************************************************************
|
||
|
// CIls definition
|
||
|
//****************************************************************************
|
||
|
//
|
||
|
|
||
|
class CIlsMain : public IIlsMain,
|
||
|
public IConnectionPointContainer
|
||
|
{
|
||
|
private:
|
||
|
|
||
|
LONG m_cRef;
|
||
|
BOOL fInit;
|
||
|
HWND hwndCallback;
|
||
|
CConnectionPoint *pConnPt;
|
||
|
|
||
|
BOOL IsInitialized (void) {return fInit;}
|
||
|
STDMETHODIMP NotifySink (void *pv, CONN_NOTIFYPROC pfn);
|
||
|
HRESULT StringToFilter (TCHAR *pszFilter ,CFilter **ppFilter);
|
||
|
|
||
|
HRESULT EnumUsersEx (
|
||
|
BOOL fNameOnly,
|
||
|
CIlsServer *pServer,
|
||
|
IIlsFilter *pFilter,
|
||
|
CAttributes *pAttrib,
|
||
|
ULONG *puReqID );
|
||
|
|
||
|
HRESULT EnumMeetingPlacesEx (
|
||
|
BOOL fNameOnly,
|
||
|
CIlsServer *pServer,
|
||
|
IIlsFilter *pFilter,
|
||
|
CAttributes *pAttrib,
|
||
|
ULONG *puReqID);
|
||
|
|
||
|
public:
|
||
|
// Constructor and destructor
|
||
|
CIlsMain (void);
|
||
|
~CIlsMain (void);
|
||
|
STDMETHODIMP Init (void);
|
||
|
|
||
|
// Internal methods
|
||
|
HWND GetNotifyWindow(void) {return hwndCallback;}
|
||
|
void LocalAsyncRespond (ULONG msg, ULONG uReqID, LPARAM lParam)
|
||
|
{PostMessage(hwndCallback, msg, uReqID, lParam); return;}
|
||
|
|
||
|
|
||
|
// Asynchronous response handler
|
||
|
//
|
||
|
STDMETHODIMP GetUserResult (ULONG uReqID, PLDAP_CLIENTINFO_RES puir, CIlsServer *pIlsServer);
|
||
|
STDMETHODIMP EnumUserNamesResult (ULONG uReqID, PLDAP_ENUM ple);
|
||
|
STDMETHODIMP EnumUsersResult (ULONG uReqID, PLDAP_ENUM ple, CIlsServer *pIlsServer);
|
||
|
#ifdef ENABLE_MEETING_PLACE
|
||
|
HRESULT GetMeetingPlaceResult (ULONG uReqID, PLDAP_MEETINFO_RES pmir, CIlsServer *pIlsServer);
|
||
|
HRESULT EnumMeetingPlacesResult(ULONG ulReqID, PLDAP_ENUM ple, CIlsServer *pIlsServer);
|
||
|
HRESULT EnumMeetingPlaceNamesResult( ULONG ulReqID, PLDAP_ENUM ple);
|
||
|
#endif // ENABLE_MEETING_PLACE
|
||
|
|
||
|
// IUnknown
|
||
|
STDMETHODIMP QueryInterface (REFIID iid, void **ppv);
|
||
|
STDMETHODIMP_(ULONG) AddRef (void);
|
||
|
STDMETHODIMP_(ULONG) Release (void);
|
||
|
|
||
|
// IIls
|
||
|
STDMETHODIMP Initialize (VOID);
|
||
|
|
||
|
STDMETHODIMP CreateServer ( BSTR bstrServerName, IIlsServer **ppServer );
|
||
|
|
||
|
STDMETHODIMP CreateUser( BSTR bstrUserID, BSTR bstrAppName, IIlsUser **ppUser);
|
||
|
|
||
|
STDMETHODIMP CreateAttributes ( ILS_ATTR_TYPE AttrType, IIlsAttributes **ppAttributes );
|
||
|
|
||
|
STDMETHODIMP EnumUserNames ( IIlsServer *pServer,
|
||
|
IIlsFilter *pFilter,
|
||
|
IEnumIlsNames **ppEnumUserNames,
|
||
|
ULONG *puReqID);
|
||
|
|
||
|
STDMETHODIMP GetUser ( IIlsServer *pServer,
|
||
|
BSTR bstrUserName,
|
||
|
BSTR bstrAppName,
|
||
|
BSTR bstrProtName,
|
||
|
IIlsAttributes *pAttrib,
|
||
|
IIlsUser **ppUser,
|
||
|
ULONG *puReqID);
|
||
|
|
||
|
STDMETHODIMP EnumUsers ( IIlsServer *pServer,
|
||
|
IIlsFilter *pFilter,
|
||
|
IIlsAttributes *pAttrib,
|
||
|
IEnumIlsUsers **ppEnumUser,
|
||
|
ULONG *puReqID);
|
||
|
|
||
|
#ifdef ENABLE_MEETING_PLACE
|
||
|
STDMETHODIMP CreateMeetingPlace(
|
||
|
BSTR bstrMeetingPlaceID,
|
||
|
LONG lMeetingPlaceType, // set to default
|
||
|
LONG lAttendeeType, // set to default
|
||
|
IIlsMeetingPlace **ppMeetingPlace
|
||
|
);
|
||
|
|
||
|
// Lightweight enumerator of MeetingPlaces for a given server
|
||
|
// This returns only the names. If a caller wants more info than
|
||
|
// the names he can get the name from here, and call the
|
||
|
// heavyweight enumerator (see below) with the filter specifying
|
||
|
// the name.
|
||
|
|
||
|
STDMETHODIMP EnumMeetingPlaceNames(
|
||
|
IIlsServer *pServer,
|
||
|
IIlsFilter *pFilter,
|
||
|
IEnumIlsNames **ppEnumMeetingPlaceNames,
|
||
|
ULONG *pulID
|
||
|
);
|
||
|
|
||
|
// Slightly heavier enumerator. Returns the MeetingPlaces and
|
||
|
// associated default attributes
|
||
|
|
||
|
STDMETHODIMP EnumMeetingPlaces(
|
||
|
IIlsServer *pServer,
|
||
|
IIlsFilter *pFilter,
|
||
|
IIlsAttributes *pAttributes,
|
||
|
IEnumIlsMeetingPlaces **ppEnumMeetingPlace,
|
||
|
ULONG *pulID
|
||
|
);
|
||
|
|
||
|
STDMETHODIMP GetMeetingPlace( IIlsServer *pServer,
|
||
|
BSTR bstrMeetingPlaceID,
|
||
|
IIlsAttributes *pAttrib,
|
||
|
IIlsMeetingPlace **ppMtg,
|
||
|
ULONG *pulID);
|
||
|
#endif // ENABLE_MEETING_PLACE
|
||
|
|
||
|
STDMETHODIMP Abort (ULONG uReqID);
|
||
|
STDMETHODIMP Uninitialize (void);
|
||
|
|
||
|
// Filter methods
|
||
|
STDMETHODIMP CreateFilter ( ILS_FILTER_TYPE FilterType,
|
||
|
ILS_FILTER_OP FilterOp,
|
||
|
IIlsFilter **ppFilter );
|
||
|
STDMETHODIMP StringToFilter (BSTR bstrFilterString, IIlsFilter **ppFilter);
|
||
|
|
||
|
// IConnectionPointContainer
|
||
|
STDMETHODIMP EnumConnectionPoints(IEnumConnectionPoints **ppEnum);
|
||
|
STDMETHODIMP FindConnectionPoint(REFIID riid,
|
||
|
IConnectionPoint **ppcp);
|
||
|
};
|
||
|
|
||
|
|
||
|
class CIlsServer : public IIlsServer
|
||
|
{
|
||
|
private:
|
||
|
|
||
|
LONG m_cRefs;
|
||
|
LONG m_dwSignature;
|
||
|
|
||
|
SERVER_INFO m_ServerInfo;
|
||
|
|
||
|
public:
|
||
|
|
||
|
CIlsServer ( VOID );
|
||
|
~CIlsServer ( VOID );
|
||
|
|
||
|
// IUnknown
|
||
|
STDMETHODIMP QueryInterface (REFIID iid, void **ppv);
|
||
|
STDMETHODIMP_(ULONG) AddRef (void);
|
||
|
STDMETHODIMP_(ULONG) Release (void);
|
||
|
|
||
|
// IIlsServer
|
||
|
STDMETHODIMP SetAuthenticationMethod ( ILS_ENUM_AUTH_METHOD enumAuthMethod );
|
||
|
STDMETHODIMP SetLogonName ( BSTR bstrLogonName );
|
||
|
STDMETHODIMP SetLogonPassword ( BSTR bstrLogonPassword );
|
||
|
STDMETHODIMP SetDomain ( BSTR bstrDomain );
|
||
|
STDMETHODIMP SetCredential ( BSTR bstrCredential );
|
||
|
STDMETHODIMP SetTimeout ( ULONG uTimeoutInSecond );
|
||
|
STDMETHODIMP SetBaseDN ( BSTR bstrBaseDN );
|
||
|
|
||
|
CIlsServer *Clone ( VOID );
|
||
|
|
||
|
HRESULT SetServerName ( TCHAR *pszServerName );
|
||
|
HRESULT SetServerName ( BSTR bstrServerName );
|
||
|
TCHAR *DuplicateServerName ( VOID );
|
||
|
BSTR DuplicateServerNameBSTR ( VOID );
|
||
|
|
||
|
SERVER_INFO *GetServerInfo ( VOID ) { return &m_ServerInfo; }
|
||
|
TCHAR *GetServerName ( VOID ) { return m_ServerInfo.pszServerName; }
|
||
|
|
||
|
BOOL IsGoodServerName ( VOID ) { return ::MyIsGoodString (m_ServerInfo.pszServerName); }
|
||
|
BOOL IsBadServerName ( VOID ) { return ::MyIsBadString (m_ServerInfo.pszServerName); }
|
||
|
|
||
|
enum { ILS_SERVER_SIGNATURE = 0x12abcdef };
|
||
|
BOOL IsGoodIlsServer ( VOID ) { return (m_dwSignature == ILS_SERVER_SIGNATURE); }
|
||
|
BOOL IsBadIlsServer ( VOID ) { return (m_dwSignature != ILS_SERVER_SIGNATURE); }
|
||
|
};
|
||
|
|
||
|
|
||
|
inline BOOL MyIsBadServer ( CIlsServer *p )
|
||
|
{
|
||
|
return (p == NULL || p->IsBadIlsServer () || p->IsBadServerName ());
|
||
|
}
|
||
|
|
||
|
inline BOOL MyIsBadServer ( IIlsServer *p )
|
||
|
{
|
||
|
return MyIsBadServer ((CIlsServer *) p);
|
||
|
}
|
||
|
|
||
|
//****************************************************************************
|
||
|
// Global Parameters
|
||
|
//****************************************************************************
|
||
|
//
|
||
|
LRESULT CALLBACK ULSNotifyProc(HWND hwnd, UINT message, WPARAM wParam,
|
||
|
LPARAM lParam);
|
||
|
|
||
|
#endif //_CONFMGR_H_
|