Leaked source code of windows server 2003
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.
 
 
 
 
 
 

278 lines
6.2 KiB

// Class to perform tha analisys
// Copyright (c) 2001 Microsoft Corporation
// Jun 2001 lucios
#ifndef ANALYSIS_HPP
#define ANALYSIS_HPP
#include "AnalysisResults.hpp"
#include "dspecup.hpp"
#include "constants.hpp"
class CSVDSReader;
struct sChangeList;
class Analysis
{
public:
Analysis(
const GUID guid_,
const CSVDSReader& csvReader409_,
const CSVDSReader& csvReaderIntl_,
const String& ldapPrefix_,
const String& rootContainerDn_,
AnalysisResults &res,
const String &reportName_=L"",
void *caleeStruct_=NULL,
progressFunction stepIt_=NULL,
progressFunction totalSteps_=NULL
);
HRESULT run();
private:
const CSVDSReader& csvReader409;
const CSVDSReader& csvReaderIntl;
String ldapPrefix;
String rootContainerDn;
AnalysisResults& results;
String reportName;
void *caleeStruct;
progressFunction stepIt;
progressFunction totalSteps;
GUID guid;
// add entry to result.createContainers if container is not present
// also returns flag isPresent
HRESULT
dealWithContainer
(
const long locale,
bool &isPresent
);
// add entries to results.createW2KObjects and
// and results.objectActions as necessary
HRESULT
dealWithW2KObjects(const long locale);
// sets iDirObj with the Active Directory object
// corresponding to the locale and object
HRESULT
getADObj
(
const long locale,
const String& object,
SmartInterface<IDirectoryObject> &iDirObj
);
// adds ordAndGuid to the property if Guid is not already there.
HRESULT
addGuid
(
IDirectoryObject *iDirObj,
const int locale,
const String &object,
const String &property,
const String &ordAndGuid
);
// replaces ordAndGuidWin2K for ordAndGuidWhistler.
HRESULT
replaceGuid
(
IDirectoryObject *iDirObj,
const int locale,
const String &object,
const String &property,
const String &ordAndGuidWin2K,
const String &ordAndGuidWhistler
);
// adds all csv values still not on the property
HRESULT
addAllCsvValues
(
IDirectoryObject *iDirObj,
const long locale,
const String &object,
const String &property
);
// adds value to the property if it is not already there.
HRESULT
addValue
(
IDirectoryObject *iDirObj,
const long locale,
const String &object,
const String &property,
const String &value
);
HRESULT
replaceW2KSingleValue
(
IDirectoryObject *iDirObj,
const int locale,
const String &object,
const String &property,
const String &WhistlerStart,
const String &W2KStart
);
HRESULT
replaceW2KMultipleValue
(
IDirectoryObject *iDirObj,
const int locale,
const String &object,
const String &property,
const String &W2KCsvValue,
const String &WhistlerCsvValue
);
// removes ordAndGuid from the property if Guid is there.
HRESULT
removeGuid(
IDirectoryObject *iDirObj,
const int locale,
const String &object,
const String &property,
const String &ordAndGuid);
// set previousSuccessfulRun reading from ADSI
HRESULT
setPreviousSuccessfullRun();
// check all changes for the given locale
HRESULT
checkChanges
(
const long locale,
const changeList& changes
);
HRESULT
getADFirstValue
(
IDirectoryObject *iDirObj,
const String &property,
String &value
);
HRESULT
isADStartValuePresent
(
IDirectoryObject *iDirObj,
const String &property,
const String &valueStart,
String &value
);
HRESULT
isADValuePresent
(
IDirectoryObject *iDirObj,
const String &property,
const String &value
);
HRESULT
getADGuid
(
IDirectoryObject *iDirObj,
const String &property,
const String &guidValue,
String &guidFound
);
HRESULT
removeExtraneous
(
IDirectoryObject *iDirObj,
const int locale,
const String &object,
const String &property,
const String &keeper
);
HRESULT
removeExtraneous
(
IDirectoryObject *iDirObj,
const int locale,
const String &object,
const String &property,
const String &keeper,
const String &start1,
const String &start2
);
HRESULT
removeExtraneousGUID
(
IDirectoryObject *iDirObj,
const int locale,
const String &object,
const String &property,
const String &keeper,
const String &ordAndGuid1,
const String &ordAndGuid2
);
HRESULT
reportObjects
(
HANDLE file,
const ObjectIdList &list,
const String &header
);
HRESULT
reportContainers
(
HANDLE file,
const LongList &list,
const String &header
);
HRESULT
reportActions
(
HANDLE file,
const ObjectActions &list,
const String &header
);
HRESULT
reportValues
(
HANDLE file,
const SingleValueList &list,
const String &header
);
HRESULT
createReport(const String& reportName);
};
#endif