|
|
//****************************************************************************
//
// Module: ULS.DLL
// File: localusr.h
// Content: This file contains the User object definition.
// History:
// Wed 17-Apr-1996 11:18:47 -by- Viroon Touranachun [viroont]
// Thu 1-16-97 combined localusr/localapp/ulsuser/ulsapp
//
// Copyright (c) Microsoft Corporation 1996-1997
//
//****************************************************************************
#ifndef _LOCALUSER_H_
#define _LOCALUSER_H_
#include "connpt.h"
#include "attribs.h"
#include "culs.h"
//****************************************************************************
// Constant definition
//****************************************************************************
//
#define LU_MOD_NONE 0x00000000
#define LU_MOD_FIRSTNAME 0x00000001
#define LU_MOD_LASTNAME 0x00000002
#define LU_MOD_EMAIL 0x00000004
#define LU_MOD_CITY 0x00000008
#define LU_MOD_COUNTRY 0x00000010
#define LU_MOD_COMMENT 0x00000020
#define LU_MOD_FLAGS 0x00000040
#define LU_MOD_IP_ADDRESS 0x00000080
#define LU_MOD_GUID 0x00000100
#define LU_MOD_MIME 0x00000200
#define LU_MOD_ATTRIB 0x00000400
#define LU_MOD_ALL (LU_MOD_FIRSTNAME + LU_MOD_LASTNAME + \
LU_MOD_EMAIL + LU_MOD_CITY + \ LU_MOD_COUNTRY + LU_MOD_COMMENT +\ LU_MOD_FLAGS +\ LU_MOD_IP_ADDRESS +\ LU_MOD_GUID + LU_MOD_MIME +\ LU_MOD_ATTRIB \ )
//****************************************************************************
// Enumeration type
//****************************************************************************
//
typedef enum { ILS_APP_SET_ATTRIBUTES, ILS_APP_REMOVE_ATTRIBUTES, } APP_CHANGE_ATTRS;
typedef enum { ILS_APP_ADD_PROT, ILS_APP_REMOVE_PROT, } APP_CHANGE_PROT;
// server
typedef enum { ULSSVR_INVALID = 0, ULSSVR_INIT, ULSSVR_REG_USER, ULSSVR_REG_PROT, ULSSVR_CONNECT, ULSSVR_UNREG_PROT, ULSSVR_UNREG_USER, ULSSVR_RELOGON, ULSSVR_NETWORK_DOWN, } ULSSVRSTATE;
//****************************************************************************
// CIlsUser definition
//****************************************************************************
//
class CIlsUser : public IIlsUser, public IConnectionPointContainer { private:
/* ------ user ------ */
LONG m_cRef; BOOL m_fReadonly; ULONG m_cLock; ULONG m_uModify; LPTSTR m_szID; LPTSTR m_szFirstName; LPTSTR m_szLastName; LPTSTR m_szEMailName; LPTSTR m_szCityName; LPTSTR m_szCountryName; LPTSTR m_szComment; DWORD m_dwFlags; LPTSTR m_szIPAddr;
LPTSTR m_szAppName; GUID m_guid; LPTSTR m_szMimeType; CAttributes m_ExtendedAttrs; CList m_ProtList; CIlsServer *m_pIlsServer; CConnectionPoint *m_pConnPt;
/* ------ server ------ */
ULSSVRSTATE m_uState; HANDLE m_hLdapUser; ULONG m_uReqID; ULONG m_uLastMsgID; IEnumIlsProtocols *m_pep;
private: // user
STDMETHODIMP InternalGetUserInfo (BOOL fAddNew, PLDAP_CLIENTINFO *ppUserInfo, ULONG uFields);
HRESULT RemoveProtocolFromList ( CLocalProt *pLocalProt );
public: // user
// Constructor and destructor
CIlsUser (void); ~CIlsUser (void);
// Lock and unlock User operation
//
ULONG Lock(void) {m_cLock++; return m_cLock;} ULONG Unlock(void) {m_cLock--; return m_cLock;} BOOL IsLocked(void) {return (m_cLock != 0);}
STDMETHODIMP Init (BSTR bstrUserID, BSTR bstrAppName); STDMETHODIMP Init (CIlsServer *pIlsServer, PLDAP_CLIENTINFO pui);
STDMETHODIMP RegisterResult(ULONG ulRegID, HRESULT hr); STDMETHODIMP UnregisterResult (ULONG uReqID, HRESULT hResult); STDMETHODIMP UpdateResult(ULONG ulUpdateID, HRESULT hr); STDMETHODIMP StateChanged ( LONG Type, BOOL fPrimary); STDMETHODIMP ProtocolChangeResult ( IIlsProtocol *pProtcol, ULONG uReqID, HRESULT hResult, APP_CHANGE_PROT uCmd);
STDMETHODIMP GetProtocolResult (ULONG uReqID, PLDAP_PROTINFO_RES ppir); STDMETHODIMP EnumProtocolsResult (ULONG uReqID, PLDAP_ENUM ple); STDMETHODIMP NotifySink (void *pv, CONN_NOTIFYPROC pfn);
// Internal methods
STDMETHODIMP SaveChanges (void); #ifdef LATER
void LocalAsyncRespond (ULONG msg, ULONG uReqID, LPARAM lParam) {PostMessage(g_hwndCulsWindow, msg, uReqID, lParam); return;} #endif //LATER
// Ldap Information
//
HRESULT GetProtocolHandle (CLocalProt *pLocalProt, PHANDLE phProt); HRESULT RegisterLocalProtocol( BOOL fAddToList, CLocalProt *pProt, PLDAP_ASYNCINFO plai ); HRESULT UnregisterLocalProtocol( CLocalProt *pProt, PLDAP_ASYNCINFO plai ); HRESULT UpdateProtocol ( IIlsProtocol *pProtocol, ULONG *puReqID, APP_CHANGE_PROT uCmd );
// IUnknown
STDMETHODIMP QueryInterface (REFIID iid, void **ppv); STDMETHODIMP_(ULONG) AddRef (void); STDMETHODIMP_(ULONG) Release (void);
// IIlsLocalUser
STDMETHODIMP Clone ( IIlsUser **ppUser );
STDMETHODIMP GetState (ILS_STATE *puULSState);
STDMETHODIMP GetStandardAttribute( ILS_STD_ATTR_NAME stdAttr, BSTR *pbstrStdAttr);
STDMETHODIMP SetStandardAttribute( ILS_STD_ATTR_NAME stdAttr, BSTR pbstrStdAttr);
STDMETHODIMP GetExtendedAttribute ( BSTR bstrName, BSTR *pbstrValue ); STDMETHODIMP SetExtendedAttribute ( BSTR bstrName, BSTR bstrValue ); STDMETHODIMP RemoveExtendedAttribute ( BSTR bstrName ); STDMETHODIMP GetAllExtendedAttributes ( IIlsAttributes **ppAttributes );
STDMETHODIMP IsWritable ( BOOL *pValue);
STDMETHODIMP Register ( IIlsServer *pServer, ULONG *puReqID );
STDMETHODIMP Unregister( ULONG *puReqID );
STDMETHODIMP Update ( ULONG *puReqID );
STDMETHODIMP GetVisible ( DWORD *pfVisible );
STDMETHODIMP SetVisible ( DWORD fVisible );
STDMETHODIMP GetGuid ( GUID *pGuid );
STDMETHODIMP SetGuid ( GUID *pGuid );
STDMETHODIMP CreateProtocol( BSTR bstrProtocolID, ULONG uPortNumber, BSTR bstrMimeType, IIlsProtocol **ppProtocol);
STDMETHODIMP AddProtocol( IIlsProtocol *pProtocol, ULONG *puReqID);
STDMETHODIMP RemoveProtocol( IIlsProtocol *pProtocol, ULONG *puReqID);
STDMETHODIMP GetProtocol( BSTR bstrProtocolID, IIlsAttributes *pAttributes, IIlsProtocol **ppProtocol, ULONG *puReqID);
STDMETHODIMP EnumProtocols( IIlsFilter *pFilter, IIlsAttributes *pAttributes, IEnumIlsProtocols **ppEnumProtocol, ULONG *puReqID);
// IConnectionPointContainer
STDMETHODIMP EnumConnectionPoints(IEnumConnectionPoints **ppEnum); STDMETHODIMP FindConnectionPoint(REFIID riid, IConnectionPoint **ppcp);
public: // server
// Server registration result
//
HRESULT InternalRegisterNext ( HRESULT ); HRESULT InternalUnregisterNext ( HRESULT );
// Register/Unregister
//
HRESULT InternalRegister (ULONG uReqID); HRESULT InternalUnregister (ULONG uReqID); HRESULT InternalCleanupRegistration ( BOOL fKeepProtList ); HRESULT EnumLocalProtocols ( IEnumIlsProtocols **pEnumProtocol );
// Server properties
//
ILS_STATE GetULSState ( VOID ); VOID SetULSState ( ULSSVRSTATE State ) { m_uState = State; }
private: // server
void NotifyULSRegister(HRESULT hr); void NotifyULSUnregister(HRESULT hr); HRESULT AddPendingRequest(ULONG uReqType, ULONG uMsgID); };
//****************************************************************************
// CEnumUsers definition
//****************************************************************************
//
class CEnumUsers : public IEnumIlsUsers { private: LONG m_cRef; CIlsUser **m_ppu; ULONG m_cUsers; ULONG m_iNext;
public: // Constructor and Initialization
CEnumUsers (void); ~CEnumUsers (void); STDMETHODIMP Init (CIlsUser **ppuList, ULONG cUsers);
// IUnknown
STDMETHODIMP QueryInterface (REFIID iid, void **ppv); STDMETHODIMP_(ULONG) AddRef (void); STDMETHODIMP_(ULONG) Release (void);
// IEnumIlsAttributes
STDMETHODIMP Next(ULONG cUsers, IIlsUser **rgpu, ULONG *pcFetched); STDMETHODIMP Skip(ULONG cUsers); STDMETHODIMP Reset(); STDMETHODIMP Clone(IEnumIlsUsers **ppEnum); };
//****************************************************************************
// CEnumLocalAppProtocols definition
//****************************************************************************
//
class CEnumProtocols : public IEnumIlsProtocols { private: LONG m_cRef; CList m_ProtList; HANDLE hEnum;
public: // Constructor and Initialization
CEnumProtocols (void); ~CEnumProtocols (void); STDMETHODIMP Init (CList *pProtList);
// IUnknown
STDMETHODIMP QueryInterface (REFIID iid, void **ppv); STDMETHODIMP_(ULONG) AddRef (void); STDMETHODIMP_(ULONG) Release (void);
// IEnumIlsProtocols
STDMETHODIMP Next(ULONG cProtocols, IIlsProtocol **rgpProt, ULONG *pcFetched); STDMETHODIMP Skip(ULONG cProtocols); STDMETHODIMP Reset(); STDMETHODIMP Clone(IEnumIlsProtocols **ppEnum); };
#endif //_LOCALUSER_H_
|