#ifndef _STATE_HXX_ #define _STATE_HXX_ // // This file contains the prototypes for all the states used in ULW3.DLL. // class W3_STATE_HANDLE_REQUEST : public W3_STATE { public: W3_STATE_HANDLE_REQUEST(); virtual ~W3_STATE_HANDLE_REQUEST(); WCHAR * QueryName( VOID ) { return L"StateHandleRequest"; } CONTEXT_STATUS DoWork( W3_MAIN_CONTEXT * pW3Context, DWORD cbCompletion, DWORD dwCompletionStatus ); }; class W3_STATE_START : public W3_STATE { public: WCHAR * QueryName( VOID ) { return L"StateStart"; } CONTEXT_STATUS DoWork( W3_MAIN_CONTEXT * pW3Context, DWORD cbCompletion, DWORD dwCompletionStatus ); }; class W3_STATE_URLINFO : public W3_STATE { public: W3_STATE_URLINFO(); virtual ~W3_STATE_URLINFO(); WCHAR * QueryName( VOID ) { return L"StateUrlInfo"; } CONTEXT_STATUS DoWork( W3_MAIN_CONTEXT * pW3Context, DWORD cbCompletion, DWORD dwCompletionStatus ); CONTEXT_STATUS OnCompletion( W3_MAIN_CONTEXT * pW3Context, DWORD cbCompletion, DWORD dwCompletionStatus ); static HRESULT FilterMapPath( W3_CONTEXT * pW3Context, W3_URL_INFO * pUrlInfo, STRU * pstrPhysicalPath ); static HRESULT MapPath( W3_CONTEXT * pW3Context, STRU & strUrl, STRU * pstrPhysicalPath, BOOL fDoFiltering, DWORD * pcchDirRoot, DWORD * pcchVRoot, DWORD * pcbAnsiDirRoot, DWORD * pcbAnsiVRoot, DWORD * pdwMask ); }; #define AUTH_PROVIDER_COUNT 10 class W3_STATE_AUTHENTICATION : public W3_STATE { public: W3_STATE_AUTHENTICATION(); virtual ~W3_STATE_AUTHENTICATION(); WCHAR * QueryName( VOID ) { return L"StateAuthentication"; } CONTEXT_STATUS DoWork( W3_MAIN_CONTEXT * pW3Context, DWORD cbCompletion, DWORD dwCompletionStatus ); CONTEXT_STATUS OnCompletion( W3_MAIN_CONTEXT * pMainContext, DWORD cbCompletion, DWORD dwCompletionStatus ); HRESULT OnAccessDenied( W3_MAIN_CONTEXT * pMainContext ); static HRESULT CallAllAccessDenied( W3_MAIN_CONTEXT * pMainContext ) { DBG_ASSERT( sm_pAuthState != NULL ); return sm_pAuthState->OnAccessDenied( pMainContext ); } HRESULT GetDefaultDomainName( VOID ); static WCHAR * QueryDefaultDomainName( VOID ) { DBG_ASSERT( sm_pAuthState != NULL ); return sm_pAuthState->_achDefaultDomainName; } static WCHAR * QueryMemberDomainName( VOID ) { DBG_ASSERT( sm_pAuthState != NULL ); return sm_pAuthState->_achMemberDomainName; } static HRESULT SplitUserDomain( STRU & strUserDomain, STRU * pstrUserName, STRU * pstrDomainName, WCHAR * pszDefaultDomain, BOOL * pfPossibleUPNLogon ); HRESULT GetSubAuthConfiguration( VOID ); HRESULT InitializeAuthenticationProviders( VOID ); VOID TerminateAuthenticationProviders( VOID ); static AUTH_PROVIDER * QueryAnonymousProvider( VOID ) { DBG_ASSERT( sm_pAuthState != NULL ); DBG_ASSERT( sm_pAuthState->_pAnonymousProvider != NULL ); return sm_pAuthState->_pAnonymousProvider; } static AUTH_PROVIDER * QueryCustomProvider( VOID ) { DBG_ASSERT( sm_pAuthState != NULL ); DBG_ASSERT( sm_pAuthState->_pCustomProvider != NULL ); return sm_pAuthState->_pCustomProvider; } static BOOL QueryIsDomainMember( VOID ) { DBG_ASSERT( sm_pAuthState != NULL ); return sm_pAuthState->_fIsDomainMember; } static BOOL sm_fSubAuthConfigured; static BOOL sm_fLocalSystem; static LONG sm_lSubAuthAnonEvent; static LONG sm_lSubAuthDigestEvent; static LONG sm_lLocalSystemEvent; private: static W3_STATE_AUTHENTICATION * sm_pAuthState; WCHAR _achDefaultDomainName[ 256 ]; WCHAR _achMemberDomainName[ 1024 ]; AUTH_PROVIDER * _rgAuthProviders[ AUTH_PROVIDER_COUNT ]; AUTH_PROVIDER * _pAnonymousProvider; AUTH_PROVIDER * _pCustomProvider; BOOL _fHasAssociatedUserBefore; BOOL _fIsDomainMember; }; class W3_STATE_AUTHORIZATION : public W3_STATE { public: WCHAR * QueryName( VOID ) { return L"StateAuthorization"; } CONTEXT_STATUS DoWork( W3_MAIN_CONTEXT *, DWORD, DWORD ) { return CONTEXT_STATUS_CONTINUE; } }; class W3_STATE_LOG : public W3_STATE { public: WCHAR * QueryName( VOID ) { return L"StateLog"; } CONTEXT_STATUS DoWork( W3_MAIN_CONTEXT * pW3Context, DWORD, DWORD ); CONTEXT_STATUS OnCompletion( W3_MAIN_CONTEXT * pW3Context, DWORD, DWORD ); }; class W3_STATE_RESPONSE : public W3_STATE { public: WCHAR * QueryName( VOID ) { return L"StateResponse"; } CONTEXT_STATUS DoWork( W3_MAIN_CONTEXT * pW3Context, DWORD cbCompletion, DWORD dwCompletionStatus ); CONTEXT_STATUS OnCompletion( W3_MAIN_CONTEXT * pW3Context, DWORD cbCompletion, DWORD dwCompletionStatus ); }; class W3_STATE_DONE : public W3_STATE { public: WCHAR * QueryName( VOID ) { return L"StateDone"; } CONTEXT_STATUS DoWork( W3_MAIN_CONTEXT * pW3Context, DWORD cbCompletion, DWORD dwCompletionStatus ); CONTEXT_STATUS OnCompletion( W3_MAIN_CONTEXT * pW3Context, DWORD cbCompletion, DWORD dwCompletionStatus ); }; #endif