// Copyright (C) 1997 Microsoft Corporation // // wizard state object // // 12-15-97 sburns #ifndef STATE_HPP_INCLUDED #define STATE_HPP_INCLUDED #include "AnswerFile.hpp" #include "UnattendSplashDialog.hpp" class State { public: // call from WinMain to init the global instance static void Init(); // call from WinMain to delete the global instance static void Destroy(); static State& GetInstance(); bool AutoConfigureDNS() const; void SetAutoConfigureDNS(bool yesNo); String GetNewDomainNetbiosName() const; void SetNewDomainNetbiosName(const String& name); String GetNewDomainDNSName() const; void SetNewDomainDNSName(const String& name); String GetUsername() const; EncodedString GetPassword() const; void SetUsername(const String& name); void SetPassword(const EncodedString& password); String GetDatabasePath() const; String GetLogPath() const; String GetSYSVOLPath() const; String GetSiteName() const; void SetDatabasePath(const String& path); void SetLogPath(const String& path); void SetSYSVOLPath(const String& path); enum RunContext { NT5_DC, // already an NT5 DC NT5_STANDALONE_SERVER, // standalone to DC NT5_MEMBER_SERVER, // member server to DC BDC_UPGRADE, // NT4 BDC to NT5 DC PDC_UPGRADE // NT4 PDC to NT5 DC }; RunContext GetRunContext() const; bool UsingAnswerFile() const; static const String OPTION_ADMIN_PASSWORD; static const String OPTION_AUTO_CONFIG_DNS; static const String OPTION_CHILD_NAME; static const String OPTION_CRITICAL_REPLICATION_ONLY; static const String OPTION_DATABASE_PATH; static const String OPTION_DNS_ON_NET; static const String OPTION_ALLOW_ANON_ACCESS; static const String OPTION_IS_LAST_DC; static const String OPTION_GC_CONFIRM; static const String OPTION_LOG_PATH; static const String OPTION_NEW_DOMAIN; static const String OPTION_NEW_DOMAIN_NAME; static const String OPTION_NEW_DOMAIN_NETBIOS_NAME; static const String OPTION_PARENT_DOMAIN_NAME; static const String OPTION_PASSWORD; static const String OPTION_REBOOT; static const String OPTION_REPLICA_DOMAIN_NAME; static const String OPTION_REPLICA_OR_MEMBER; static const String OPTION_REPLICA_OR_NEW_DOMAIN; static const String OPTION_REPLICATION_SOURCE; static const String OPTION_SAFE_MODE_ADMIN_PASSWORD; static const String OPTION_SET_FOREST_VERSION; static const String OPTION_SITE_NAME; static const String OPTION_SYSVOL_PATH; static const String OPTION_SYSKEY; static const String OPTION_USERNAME; static const String OPTION_USER_DOMAIN; static const String VALUE_DOMAIN; static const String VALUE_REPLICA; static const String VALUE_TREE; static const String VALUE_CHILD; static const String VALUE_YES; static const String VALUE_NO; static const String VALUE_NO_DONT_PROMPT; static const String OPTION_SOURCE_PATH; String GetAnswerFileOption(const String& option) const; EncodedString GetEncodedAnswerFileOption(const String& option) const; String GetReplicaDomainDNSName() const; enum Operation { NONE, REPLICA, FOREST, TREE, CHILD, DEMOTE, ABORT_BDC_UPGRADE }; Operation GetOperation() const; String GetParentDomainDnsName() const; void SetParentDomainDNSName(const String& name); enum OperationResult { SUCCESS, FAILURE }; void SetOperationResults(OperationResult result); OperationResult GetOperationResultsCode() const; void SetOperationResultsMessage(const String& message); String GetOperationResultsMessage() const; void SetOperation(Operation oper); void SetReplicaDomainDNSName(const String& dnsName); void SetSiteName(const String& site); void SetUserDomainName(const String& name); String GetUserDomainName() const; void ClearHiddenWhileUnattended(); bool RunHiddenUnattended() const; bool IsLastDCInDomain() const; void SetIsLastDCInDomain(bool yesNo); void SetAdminPassword(const EncodedString& password); EncodedString GetAdminPassword() const; bool IsDNSOnNetwork() const; void SetDNSOnNetwork(bool yesNo); String GetInstalledSite() const; void SetInstalledSite(const String& site); void AddFinishMessage(const String& message); String GetFinishMessages() const; Computer& GetComputer(); void SetFailureMessage(const String& message); String GetFailureMessage() const; bool ShouldInstallAndConfigureDns() const; String GetUserForestName() const; void SetUserForestName(const String& forest); bool IsDomainInForest(const String& domain) const; HRESULT ReadDomains(); DNS_NAME_COMPARE_STATUS DomainFitsInForest(const String& domain, String& conflictingDomain); bool GetDomainReinstallFlag() const; void SetDomainReinstallFlag(bool newValue); // true to indicate that the RAS permissions script should be run. bool ShouldAllowAnonymousAccess() const; void SetShouldAllowAnonymousAccess(bool yesNo); String GetReplicationPartnerDC() const; void SetReplicationPartnerDC(const String dcName); // returns true if the machine is hosts a global catalog bool IsGlobalCatalog(); EncodedString GetSafeModeAdminPassword() const; void SetSafeModeAdminPassword(const EncodedString& pwd); String GetAdminToolsShortcutPath() const; bool NeedsCommandLineHelp() const; bool IsAdvancedMode() const; void SetReplicateFromMedia(bool yesNo); void SetReplicationSourcePath(const String& path); bool ReplicateFromMedia() const; String GetReplicationSourcePath() const; bool IsReallyLastDcInDomain(); enum SyskeyLocation { STORED, // stored w/ backup DISK, // look on disk PROMPT // prompt user }; void SetSyskeyLocation(SyskeyLocation loc); SyskeyLocation GetSyskeyLocation() const; void SetIsBackupGc(bool yesNo); bool IsBackupGc() const; void SetSyskey(const EncodedString& syskey); EncodedString GetSyskey() const; void SetRestoreGc(bool yesNo); bool GetRestoreGc() const; bool IsSafeModeAdminPwdOptionPresent() const; bool GetDomainControllerReinstallFlag() const; void SetDomainControllerReinstallFlag(bool newValue); bool IsOperationRetryAllowed() const; ULONG GetOperationResultsFlags() const; void SetOperationResultsFlags(ULONG flags); void SetNeedsReboot(); bool GetNeedsReboot() const; void SetSetForestVersionFlag(bool setVersion); bool GetSetForestVersionFlag() const; private: // can only be created/destroyed by Init/Destroy State(); ~State(); void DetermineRunContext(); void SetupAnswerFile(const String& filename, bool isDefaultAnswerfile); HRESULT GetDomainControllerInfoForMyDomain( DS_DOMAIN_CONTROLLER_INFO_2W*& info, DWORD& dcCount); typedef StringList DomainList; EncodedString adminPassword; bool allowAnonAccess; AnswerFile* answerFile; bool autoConfigDns; Computer computer; RunContext context; String dbPath; DomainList domainsInForest; String failureMessage; String finishMessages; String installedSite; bool isAdvancedMode; bool isBackupGc; bool isDnsOnNet; bool isLastDc; bool isUpgrade; String logPath; bool needsCommandLineHelp; bool needsReboot; String newDomainDnsName; String newDomainFlatName; Operation operation; String operationResultsMessage; OperationResult operationResultsStatus; ULONG operationResultsFlags; String parentDomainDnsName; EncodedString password; bool reinstallDomain; bool reinstallDomainController; String replicaDnsDomainName; bool replicateFromMedia; String replicationPartnerDc; bool restoreGc; bool runHiddenWhileUnattended; EncodedString safeModeAdminPassword; bool setForestVersion; String shortcutPath; String siteName; String sourcePath; UnattendSplashDialog* splash; String sysvolPath; EncodedString syskey; SyskeyLocation syskeyLocation; bool useCurrentCredentials; String userDomain; String userForest; String username; // not defined: no copying. State(const State&); State& operator=(const State&); }; #endif // STATE_HPP_INCLUDED