Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

97 lines
3.0 KiB

// SecTranslator.h : Declaration of the CSecTranslator
#ifndef __SECTRANSLATOR_H_
#define __SECTRANSLATOR_H_
#include "resource.h" // main symbols
//#import "\bin\McsVarSetMin.tlb" no_namespace, named_guids
//#import "VarSet.tlb" no_namespace, named_guids rename("property", "aproperty") //#imported via sdstat.hpp below
#include "STArgs.hpp"
#include "SDStat.hpp"
#include "EaLen.hpp"
#include "TNode.hpp"
/////////////////////////////////////////////////////////////////////////////
// CSecTranslator
class ATL_NO_VTABLE CSecTranslator :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CSecTranslator, &CLSID_SecTranslator>,
public ISecTranslator
{
public:
CSecTranslator()
{
m_pUnkMarshaler = NULL;
m_exchServer[0] = 0;
m_Profile[0] = 0;
m_Container[0] = 0;
m_CacheFile[0] = 0;
m_domain[0] = 0;
m_username[0] = 0;
m_password[0] = 0;
m_LocalOnly = FALSE;
}
DECLARE_REGISTRY_RESOURCEID(IDR_SECTRANSLATOR)
DECLARE_NOT_AGGREGATABLE(CSecTranslator)
DECLARE_GET_CONTROLLING_UNKNOWN()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CSecTranslator)
COM_INTERFACE_ENTRY(ISecTranslator)
COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
END_COM_MAP()
HRESULT FinalConstruct()
{
return CoCreateFreeThreadedMarshaler(
GetControllingUnknown(), &m_pUnkMarshaler.p);
}
void FinalRelease()
{
m_pUnkMarshaler.Release();
}
CComPtr<IUnknown> m_pUnkMarshaler;
// ISecTranslator
public:
STDMETHOD(Process)(IUnknown * pWorkItemIn);
protected:
SecurityTranslatorArgs m_Args;
WCHAR m_exchServer[LEN_Computer];
WCHAR m_Profile[LEN_DistName];
WCHAR m_Container[LEN_DistName];
WCHAR m_CacheFile[MAX_PATH];
WCHAR m_domain[LEN_Domain];
WCHAR m_username[LEN_Account];
WCHAR m_password[LEN_Password];
WCHAR m_SourceSid[LEN_Account];
WCHAR m_TargetSid[LEN_Account];
BOOL m_LocalOnly;
TNodeList m_ConnectionList;
void LoadSettingsFromVarSet(IVarSet * pVarSet);
void ExportStatsToVarSet(IVarSet * pVarSet, TSDResolveStats * stat);
void DoResolution(TSDResolveStats * stat);
void DoLocalGroupResolution(TSDResolveStats * stat);
void DoExchangeResolution(TSDResolveStats * stat, IVarSet * pVarSet);
void DoUserRightsTranslation(TSDResolveStats * stat);
void CleanupSessions();
BOOL LoadCacheFromVarSet(IVarSet * pVarSet);
BOOL LoadCacheFromFile(WCHAR const * filename, IVarSet * pVarSet);
BOOL GetRIDsFromEA();
BOOL BuildCacheFile(WCHAR const * filename);
BOOL RemoveExchangeServiceAccountFromCache();
BOOL EstablishASession(WCHAR const * serverName);
HRESULT LoadMigratedObjects(IVarSet * pVarSetIn);
BOOL LoadCacheFromMapFile(WCHAR const * filename, IVarSet * pVarSet);
FILE* OpenMappingFile(LPCTSTR pszFileName);
};
#endif //__SECTRANSLATOR_H_