Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Unified Diff: common/config_manager.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « common/config_manager.h ('k') | common/config_manager_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: common/config_manager.cc
diff --git a/common/config_manager.cc b/common/config_manager.cc
deleted file mode 100644
index 752453927a99ea4406fdc9cea9b9ac7dfa481534..0000000000000000000000000000000000000000
--- a/common/config_manager.cc
+++ /dev/null
@@ -1,817 +0,0 @@
-// Copyright 2007-2010 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// ========================================================================
-
-#include "omaha/common/config_manager.h"
-#include <lm.h>
-#include <shlobj.h>
-#include <shlwapi.h>
-#include <wininet.h>
-#include <atlstr.h>
-#include <atlsecurity.h>
-#include <math.h>
-#include "omaha/base/app_util.h"
-#include "omaha/base/constants.h"
-#include "omaha/base/const_addresses.h"
-#include "omaha/base/debug.h"
-#include "omaha/base/error.h"
-#include "omaha/base/logging.h"
-#include "omaha/base/scope_guard.h"
-#include "omaha/base/string.h"
-#include "omaha/base/time.h"
-#include "omaha/base/utils.h"
-#include "omaha/base/vistautil.h"
-#include "omaha/common/app_registry_utils.h"
-#include "omaha/common/const_group_policy.h"
-#include "omaha/common/const_goopdate.h"
-#include "omaha/common/oem_install_utils.h"
-
-namespace omaha {
-
-namespace {
-
-HRESULT GetDir(int csidl,
- const CString& path_tail,
- bool create_dir,
- CString* dir) {
- ASSERT1(dir);
-
- CString path;
- HRESULT hr = GetFolderPath(csidl | CSIDL_FLAG_DONT_VERIFY, &path);
- if (FAILED(hr)) {
- CORE_LOG(LW, (_T("GetDir failed to find path][%d][0x%08x]"), csidl, hr));
- return hr;
- }
- if (!::PathAppend(CStrBuf(path, MAX_PATH), path_tail)) {
- CORE_LOG(LW, (_T("GetDir failed to append path][%s][%s]"), path, path_tail));
- return GOOPDATE_E_PATH_APPEND_FAILED;
- }
- dir->SetString(path);
-
- // Try to create the directory. Continue if the directory can't be created.
- if (create_dir) {
- hr = CreateDir(path, NULL);
- if (FAILED(hr)) {
- CORE_LOG(LW, (_T("[GetDir failed to create dir][%s][0x%08x]"), path, hr));
- }
- }
- return S_OK;
-}
-
-// The app-specific value overrides the disable all value so read the former
-// first. If it doesn't exist, read the "disable all" value.
-bool GetEffectivePolicyForApp(const TCHAR* apps_default_value_name,
- const TCHAR* app_prefix_name,
- const GUID& app_guid,
- DWORD* effective_policy) {
- ASSERT1(apps_default_value_name);
- ASSERT1(app_prefix_name);
- ASSERT1(effective_policy);
-
- CString app_value_name(app_prefix_name);
- app_value_name.Append(GuidToString(app_guid));
-
- HRESULT hr = RegKey::GetValue(kRegKeyGoopdateGroupPolicy,
- app_value_name,
- effective_policy);
- if (SUCCEEDED(hr)) {
- return true;
- } else {
- CORE_LOG(L4, (_T("[Failed to read Group Policy value][%s]"),
- app_value_name));
- }
-
- hr = RegKey::GetValue(kRegKeyGoopdateGroupPolicy,
- apps_default_value_name,
- effective_policy);
- if (SUCCEEDED(hr)) {
- return true;
- } else {
- CORE_LOG(L4, (_T("[Failed to read Group Policy value][%s]"),
- apps_default_value_name));
- }
-
- return false;
-}
-
-// Gets the raw update check period override value in seconds from the registry.
-// The value must be processed for limits and overflow before using.
-// Checks UpdateDev and Group Policy.
-// Returns true if either override was successefully read.
-bool GetLastCheckPeriodSecFromRegistry(DWORD* period_sec) {
- ASSERT1(period_sec);
-
- DWORD update_dev_sec = 0;
- if (SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueLastCheckPeriodSec,
- &update_dev_sec))) {
- CORE_LOG(L5, (_T("['LastCheckPeriodSec' override %d]"), update_dev_sec));
- *period_sec = update_dev_sec;
- return true;
- }
-
- DWORD group_policy_minutes = 0;
- if (SUCCEEDED(RegKey::GetValue(kRegKeyGoopdateGroupPolicy,
- kRegValueAutoUpdateCheckPeriodOverrideMinutes,
- &group_policy_minutes))) {
- CORE_LOG(L5, (_T("[Group Policy check period override %d]"),
- group_policy_minutes));
-
-
- *period_sec = (group_policy_minutes > UINT_MAX / 60) ?
- UINT_MAX :
- group_policy_minutes * 60;
-
- return true;
- }
-
- return false;
-}
-
-} // namespace
-
-LLock ConfigManager::lock_;
-ConfigManager* ConfigManager::config_manager_ = NULL;
-
-ConfigManager* ConfigManager::Instance() {
- __mutexScope(lock_);
- if (!config_manager_) {
- config_manager_ = new ConfigManager();
- }
- return config_manager_;
-}
-
-void ConfigManager::DeleteInstance() {
- delete config_manager_;
-}
-
-ConfigManager::ConfigManager() {
- CString current_module_directory(app_util::GetCurrentModuleDirectory());
-
- CString path;
- HRESULT hr = GetDir(CSIDL_LOCAL_APPDATA,
- CString(OMAHA_REL_GOOPDATE_INSTALL_DIR),
- false,
- &path);
-
- is_running_from_official_user_dir_ =
- SUCCEEDED(hr) ? (String_StrNCmp(path,
- current_module_directory,
- path.GetLength(),
- true) == 0) :
- false;
-
- hr = GetDir(CSIDL_PROGRAM_FILES,
- CString(OMAHA_REL_GOOPDATE_INSTALL_DIR),
- false,
- &path);
-
- is_running_from_official_machine_dir_ =
- SUCCEEDED(hr) ? (String_StrNCmp(path,
- current_module_directory,
- path.GetLength(),
- true) == 0) :
- false;
-}
-
-CString ConfigManager::GetUserDownloadStorageDir() const {
- CString path;
- VERIFY1(SUCCEEDED(GetDir(CSIDL_LOCAL_APPDATA,
- CString(OMAHA_REL_DOWNLOAD_STORAGE_DIR),
- true,
- &path)));
- return path;
-}
-
-CString ConfigManager::GetUserInstallWorkingDir() const {
- CString path;
- VERIFY1(SUCCEEDED(GetDir(CSIDL_LOCAL_APPDATA,
- CString(OMAHA_REL_INSTALL_WORKING_DIR),
- true,
- &path)));
- return path;
-}
-
-CString ConfigManager::GetUserOfflineStorageDir() const {
- CString path;
- VERIFY1(SUCCEEDED(GetDir(CSIDL_LOCAL_APPDATA,
- CString(OMAHA_REL_OFFLINE_STORAGE_DIR),
- true,
- &path)));
- return path;
-}
-
-CString ConfigManager::GetUserGoopdateInstallDirNoCreate() const {
- CString path;
- VERIFY1(SUCCEEDED(GetDir(CSIDL_LOCAL_APPDATA,
- CString(OMAHA_REL_GOOPDATE_INSTALL_DIR),
- false,
- &path)));
- return path;
-}
-
-CString ConfigManager::GetUserGoopdateInstallDir() const {
- CString path;
- VERIFY1(SUCCEEDED(GetDir(CSIDL_LOCAL_APPDATA,
- CString(OMAHA_REL_GOOPDATE_INSTALL_DIR),
- true,
- &path)));
- return path;
-}
-
-bool ConfigManager::IsRunningFromUserGoopdateInstallDir() const {
- return is_running_from_official_user_dir_;
-}
-
-CString ConfigManager::GetUserCrashReportsDir() const {
- CString path;
- VERIFY1(SUCCEEDED(GetDir(CSIDL_LOCAL_APPDATA,
- CString(OMAHA_REL_CRASH_DIR),
- true,
- &path)));
- return path;
-}
-
-CString ConfigManager::GetMachineCrashReportsDir() const {
- CString path;
- VERIFY1(SUCCEEDED(GetDir(CSIDL_PROGRAM_FILES,
- CString(OMAHA_REL_CRASH_DIR),
- true,
- &path)));
- return path;
-}
-
-CString ConfigManager::GetMachineSecureDownloadStorageDir() const {
- CString path;
- VERIFY1(SUCCEEDED(GetDir(CSIDL_PROGRAM_FILES,
- CString(OMAHA_REL_DOWNLOAD_STORAGE_DIR),
- true,
- &path)));
- return path;
-}
-
-CString ConfigManager::GetMachineInstallWorkingDir() const {
- CString path;
- VERIFY1(SUCCEEDED(GetDir(CSIDL_PROGRAM_FILES,
- CString(OMAHA_REL_INSTALL_WORKING_DIR),
- true,
- &path)));
- return path;
-}
-
-CString ConfigManager::GetMachineSecureOfflineStorageDir() const {
- CString path;
- VERIFY1(SUCCEEDED(GetDir(CSIDL_PROGRAM_FILES,
- CString(OMAHA_REL_OFFLINE_STORAGE_DIR),
- true,
- &path)));
- return path;
-}
-
-CString ConfigManager::GetTempDownloadDir() const {
- CString temp_download_dir(app_util::GetTempDirForImpersonatedOrCurrentUser());
- ASSERT1(temp_download_dir);
- HRESULT hr = CreateDir(temp_download_dir, NULL);
- if (FAILED(hr)) {
- CORE_LOG(LW, (_T("[GetDir failed to create dir][%s][0x%08x]"),
- temp_download_dir, hr));
- }
- return temp_download_dir;
-}
-
-int ConfigManager::GetPackageCacheSizeLimitMBytes() const {
- DWORD kDefaultCacheStorageLimit = 500; // 500 MB
- DWORD kMaxCacheStorageLimit = 5000; // 5 GB
-
- DWORD cache_size_limit = 0;
- if (FAILED(RegKey::GetValue(kRegKeyGoopdateGroupPolicy,
- kRegValueCacheSizeLimitMBytes,
- &cache_size_limit)) ||
- cache_size_limit > kMaxCacheStorageLimit ||
- cache_size_limit == 0) {
- cache_size_limit = kDefaultCacheStorageLimit;
- }
-
- return static_cast<int>(cache_size_limit);
-}
-
-int ConfigManager::GetPackageCacheExpirationTimeDays() const {
- DWORD kDefaultCacheLifeTimeInDays = 180; // 180 days.
- DWORD kMaxCacheLifeTimeInDays = 1800; // Roughly 5 years.
-
- DWORD cache_life_limit = 0;
- if (FAILED(RegKey::GetValue(kRegKeyGoopdateGroupPolicy,
- kRegValueCacheLifeLimitDays,
- &cache_life_limit)) ||
- cache_life_limit > kMaxCacheLifeTimeInDays ||
- cache_life_limit == 0) {
- cache_life_limit = kDefaultCacheLifeTimeInDays;
- }
-
- return static_cast<int>(cache_life_limit);
-}
-
-CString ConfigManager::GetMachineGoopdateInstallDirNoCreate() const {
- CString path;
- VERIFY1(SUCCEEDED(GetDir(CSIDL_PROGRAM_FILES,
- CString(OMAHA_REL_GOOPDATE_INSTALL_DIR),
- false,
- &path)));
- return path;
-}
-
-CString ConfigManager::GetMachineGoopdateInstallDir() const {
- CString path;
- VERIFY1(SUCCEEDED(GetDir(CSIDL_PROGRAM_FILES,
- CString(OMAHA_REL_GOOPDATE_INSTALL_DIR),
- true,
- &path)));
- return path;
-}
-
-bool ConfigManager::IsRunningFromMachineGoopdateInstallDir() const {
- return is_running_from_official_machine_dir_;
-}
-
-HRESULT ConfigManager::GetPingUrl(CString* url) const {
- ASSERT1(url);
-
- if (SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueNamePingUrl,
- url))) {
- CORE_LOG(L5, (_T("['ping url' override %s]"), *url));
- return S_OK;
- }
-
- *url = kUrlPing;
- return S_OK;
-}
-
-HRESULT ConfigManager::GetUpdateCheckUrl(CString* url) const {
- ASSERT1(url);
-
- if (SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueNameUrl,
- url))) {
- CORE_LOG(L5, (_T("['update check url' override %s]"), *url));
- return S_OK;
- }
-
- *url = kUrlUpdateCheck;
- return S_OK;
-}
-
-HRESULT ConfigManager::GetCrashReportUrl(CString* url) const {
- ASSERT1(url);
-
- if (SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueNameCrashReportUrl,
- url))) {
- CORE_LOG(L5, (_T("['crash report url' override %s]"), *url));
- return S_OK;
- }
-
- *url = kUrlCrashReport;
- return S_OK;
-}
-
-HRESULT ConfigManager::GetMoreInfoUrl(CString* url) const {
- ASSERT1(url);
-
- if (SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueNameGetMoreInfoUrl,
- url))) {
- CORE_LOG(L5, (_T("['more info url' override %s]"), *url));
- return S_OK;
- }
-
- *url = kUrlMoreInfo;
- return S_OK;
-}
-
-HRESULT ConfigManager::GetUsageStatsReportUrl(CString* url) const {
- ASSERT1(url);
-
- if (SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueNameUsageStatsReportUrl,
- url))) {
- CORE_LOG(L5, (_T("['usage stats report url' override %s]"), *url));
- return S_OK;
- }
-
- *url = kUrlUsageStatsReport;
- return S_OK;
-}
-
-// Returns the override from the registry locations if present. Otherwise,
-// returns the default value.
-// Default value is different value for internal users to make update checks
-// more aggresive.
-// Ensures returned value is between kMinLastCheckPeriodSec and INT_MAX except
-// when the override is 0, which indicates updates are disabled.
-int ConfigManager::GetLastCheckPeriodSec(bool* is_overridden) const {
- ASSERT1(is_overridden);
- DWORD registry_period_sec = 0;
- *is_overridden = GetLastCheckPeriodSecFromRegistry(&registry_period_sec);
- if (*is_overridden) {
- if (0 == registry_period_sec) {
- return 0;
- }
- const int period_sec = registry_period_sec > INT_MAX ?
- INT_MAX :
- static_cast<int>(registry_period_sec);
-
- if (period_sec < kMinLastCheckPeriodSec) {
- return kMinLastCheckPeriodSec;
- }
- return period_sec;
- }
-
- // Returns a lower value for internal users.
- if (IsInternalUser()) {
- return kLastCheckPeriodInternalUserSec;
- }
-
- return kLastCheckPeriodSec;
-}
-
-// All time values are in seconds.
-int ConfigManager::GetTimeSinceLastCheckedSec(bool is_machine) const {
- const uint32 now = Time64ToInt32(GetCurrent100NSTime());
- const uint32 last_checked = GetLastCheckedTime(is_machine);
- if (now < last_checked) {
- CORE_LOG(LW, (_T("[possible time warp detected]")
- _T("[now %u][last checked %u]"), now, last_checked));
- }
- const int time_difference = abs(static_cast<int>(now - last_checked));
- bool is_period_overridden = false;
- CORE_LOG(L3, (_T("[now %u][last checked %u][update interval %u]")
- _T("[time difference %u]"),
- now, last_checked, GetLastCheckPeriodSec(&is_period_overridden),
- time_difference));
- return time_difference;
-}
-
-DWORD ConfigManager::GetLastCheckedTime(bool is_machine) const {
- const TCHAR* reg_update_key = is_machine ? MACHINE_REG_UPDATE:
- USER_REG_UPDATE;
- DWORD last_checked_time = 0;
- if (SUCCEEDED(RegKey::GetValue(reg_update_key,
- kRegValueLastChecked,
- &last_checked_time))) {
- return last_checked_time;
- }
- return 0;
-}
-
-HRESULT ConfigManager::SetLastCheckedTime(bool is_machine, DWORD time) const {
- const TCHAR* reg_update_key = is_machine ? MACHINE_REG_UPDATE:
- USER_REG_UPDATE;
- return RegKey::SetValue(reg_update_key, kRegValueLastChecked, time);
-}
-
-DWORD ConfigManager::GetInstallTime(bool is_machine) {
- const CString client_state_key_name =
- ConfigManager::Instance()->registry_client_state_goopdate(is_machine);
- DWORD update_time(0);
- if (SUCCEEDED(RegKey::GetValue(client_state_key_name,
- kRegValueLastUpdateTimeSec,
- &update_time))) {
- return update_time;
- }
-
- DWORD install_time(0);
- if (SUCCEEDED(RegKey::GetValue(client_state_key_name,
- kRegValueInstallTimeSec,
- &install_time))) {
- return install_time;
- }
-
- return 0;
-}
-
-bool ConfigManager::Is24HoursSinceInstall(bool is_machine) {
- const int kDaySec = 24 * 60 * 60;
- const uint32 now = Time64ToInt32(GetCurrent100NSTime());
-
- const uint32 install_time = GetInstallTime(is_machine);
- if (now < install_time) {
- CORE_LOG(LW, (_T("[Incorrect clock time detected]")
- _T("[now %u][install_time %u]"), now, install_time));
- }
- const int time_difference = abs(static_cast<int>(now - install_time));
- return time_difference >= kDaySec;
-}
-
-// Uses app_registry_utils because this needs to be called in the server and
-// client and it is a best effort so locking isn't necessary.
-bool ConfigManager::CanCollectStats(bool is_machine) const {
- if (RegKey::HasValue(MACHINE_REG_UPDATE_DEV, kRegValueForceUsageStats)) {
- return true;
- }
-
- // TODO(omaha): This should actually be iterating over registered products
- // rather than present ClientState keys. These are identical in most cases.
- const TCHAR* state_key_name = registry_client_state(is_machine);
-
- RegKey state_key;
- HRESULT hr = state_key.Open(state_key_name, KEY_READ);
- if (FAILED(hr)) {
- return false;
- }
-
- int num_sub_keys = state_key.GetSubkeyCount();
- for (int i = 0; i < num_sub_keys; ++i) {
- CString sub_key_name;
- if (FAILED(state_key.GetSubkeyNameAt(i, &sub_key_name))) {
- continue;
- }
-
- if (app_registry_utils::AreAppUsageStatsEnabled(is_machine, sub_key_name)) {
- return true;
- }
- }
-
- return false;
-}
-
-// Overrides OverInstall in debug builds.
-bool ConfigManager::CanOverInstall() const {
-#ifdef DEBUG
- DWORD value = 0;
- if (SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueNameOverInstall,
- &value))) {
- CORE_LOG(L5, (_T("['OverInstall' override %d]"), value));
- return value != 0;
- }
-#endif
- return !OFFICIAL_BUILD;
-}
-
-// Overrides AuCheckPeriodMs. Implements a lower bound value. Returns INT_MAX
-// if the registry value exceeds INT_MAX.
-int ConfigManager::GetAutoUpdateTimerIntervalMs() const {
- DWORD interval(0);
- if (SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueAuCheckPeriodMs,
- &interval))) {
- int ret_val = 0;
- if (interval > INT_MAX) {
- ret_val = INT_MAX;
- } else if (interval < kMinAUCheckPeriodMs) {
- ret_val = kMinAUCheckPeriodMs;
- } else {
- ret_val = interval;
- }
- ASSERT1(ret_val >= kMinAUCheckPeriodMs);
- CORE_LOG(L5, (_T("['AuCheckPeriodMs' override %d]"), interval));
- return ret_val;
- }
-
- // Returns a lower value for internal users.
- if (IsInternalUser()) {
- return kAUCheckPeriodInternalUserMs;
- }
-
- return kAUCheckPeriodMs;
-}
-
-int ConfigManager::GetUpdateWorkerStartUpDelayMs() const {
- int au_timer_interval_ms = GetAutoUpdateTimerIntervalMs();
-
- // If the AuCheckPeriod is overriden then use that as the delay.
- if (RegKey::HasValue(MACHINE_REG_UPDATE_DEV, kRegValueAuCheckPeriodMs)) {
- return au_timer_interval_ms;
- }
-
- int random_delay = 0;
- if (!GenRandom(&random_delay, sizeof(random_delay))) {
- return au_timer_interval_ms;
- }
-
- // Scale the au_check_period number to be between
- // kUpdateTimerStartupDelayMinMs and kUpdateTimerStartupDelayMaxMs.
- int scale = kUpdateTimerStartupDelayMaxMs - kUpdateTimerStartupDelayMinMs;
- ASSERT1(scale >= 0);
-
- int random_addition = abs(random_delay) % scale;
- ASSERT1(random_addition < scale);
-
- au_timer_interval_ms = kUpdateTimerStartupDelayMinMs + random_addition;
- ASSERT1(au_timer_interval_ms >= kUpdateTimerStartupDelayMinMs &&
- au_timer_interval_ms <= kUpdateTimerStartupDelayMaxMs);
-
- return au_timer_interval_ms;
-}
-
-// Overrides CodeRedCheckPeriodMs. Implements a lower bound value. Returns
-// INT_MAX if the registry value exceeds INT_MAX.
-int ConfigManager::GetCodeRedTimerIntervalMs() const {
- DWORD interval(0);
- if (SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueCrCheckPeriodMs,
- &interval))) {
- int ret_val = 0;
- if (interval > INT_MAX) {
- ret_val = INT_MAX;
- } else if (interval < kMinCodeRedCheckPeriodMs) {
- ret_val = kMinCodeRedCheckPeriodMs;
- } else {
- ret_val = interval;
- }
- ASSERT1(ret_val >= kMinCodeRedCheckPeriodMs);
- CORE_LOG(L5, (_T("['CrCheckPeriodMs' override %d]"), interval));
- return ret_val;
- }
- return kCodeRedCheckPeriodMs;
-}
-
-// Returns true if logging is enabled for the event type.
-// Logging of errors and warnings is enabled by default.
-bool ConfigManager::CanLogEvents(WORD event_type) const {
- const TCHAR* reg_update_key = MACHINE_REG_UPDATE_DEV;
- DWORD log_events_level = LOG_EVENT_LEVEL_NONE;
- if (SUCCEEDED(RegKey::GetValue(reg_update_key,
- kRegValueEventLogLevel,
- &log_events_level))) {
- switch (log_events_level) {
- case LOG_EVENT_LEVEL_ALL:
- return true;
- case LOG_EVENT_LEVEL_WARN_AND_ERROR:
- return event_type == EVENTLOG_ERROR_TYPE ||
- event_type == EVENTLOG_WARNING_TYPE;
- case LOG_EVENT_LEVEL_NONE:
- default:
- return false;
- }
- }
-
- return event_type == EVENTLOG_ERROR_TYPE ||
- event_type == EVENTLOG_WARNING_TYPE;
-}
-
-CString ConfigManager::GetTestSource() const {
- CString test_source;
- HRESULT hr = RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueTestSource,
- &test_source);
- if (SUCCEEDED(hr)) {
- if (test_source.IsEmpty()) {
- test_source = kRegValueTestSourceAuto;
- }
- return test_source;
- }
-
- DWORD interval = 0;
- hr = RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueAuCheckPeriodMs,
- &interval);
- if (SUCCEEDED(hr)) {
- return kRegValueTestSourceAuto;
- }
-
-#if defined(DEBUG) || !OFFICIAL_BUILD
- test_source = kRegValueTestSourceAuto;
-#endif
-
- return test_source;
-}
-
-HRESULT ConfigManager::GetNetConfig(CString* net_config) {
- ASSERT1(net_config);
- CString val;
- HRESULT hr = RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueNetConfig,
- &val);
- if (SUCCEEDED(hr)) {
- *net_config = val;
- }
- return hr;
-}
-
-// Returns false if running in the context of an OEM install or waiting for a
-// EULA to be accepted.
-bool ConfigManager::CanUseNetwork(bool is_machine) const {
- DWORD eula_accepted(0);
- HRESULT hr = RegKey::GetValue(registry_update(is_machine),
- kRegValueOmahaEulaAccepted,
- &eula_accepted);
- if (SUCCEEDED(hr) && 0 == eula_accepted) {
- CORE_LOG(L3, (_T("[CanUseNetwork][eulaaccepted=0][false]")));
- return false;
- }
-
- if (oem_install_utils::IsOemInstalling(is_machine)) {
- CORE_LOG(L3, (_T("[CanUseNetwork][OEM installing][false]")));
- return false;
- }
-
- return true;
-}
-
-// USE oem_install_utils::IsOemInstalling() INSTEAD in most cases.
-bool ConfigManager::IsWindowsInstalling() const {
-#if !OFFICIAL_BUILD
- DWORD value = 0;
- if (SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueNameWindowsInstalling,
- &value))) {
- CORE_LOG(L3, (_T("['WindowsInstalling' override %d]"), value));
- return value != 0;
- }
-#endif
-
- return omaha::IsWindowsInstalling();
-}
-
-// Checks if the computer name ends with ".google.com" or the NetBIOS domain is
-// "google".
-bool ConfigManager::IsInternalUser() const {
- CORE_LOG(L4, (_T("[ConfigManager::IsInternalUser]")));
- TCHAR dns_name[INTERNET_MAX_HOST_NAME_LENGTH] = {0};
- DWORD dns_name_size(arraysize(dns_name));
- if (::GetComputerNameEx(ComputerNameDnsFullyQualified,
- dns_name, &dns_name_size)) {
- CORE_LOG(L4, (_T("[dns name %s]"), dns_name));
- if (String_EndsWith(dns_name, kCompanyInternalDnsName, true)) {
- return true;
- }
- }
-
- WKSTA_INFO_100* info = NULL;
- int kInformationLevel = 100;
- NET_API_STATUS status = ::NetWkstaGetInfo(NULL,
- kInformationLevel,
- reinterpret_cast<BYTE**>(&info));
- ON_SCOPE_EXIT(::NetApiBufferFree, info);
- if (status == NERR_Success) {
- CORE_LOG(L4, (_T("[netbios name %s]"), info->wki100_langroup));
- if (info->wki100_langroup &&
- _tcsicmp(info->wki100_langroup, kCompanyInternalLanGroupName) == 0) {
- return true;
- }
- }
- return false;
-}
-
-bool ConfigManager::CanInstallApp(const GUID& app_guid) const {
- // Google Update should never be checking whether it can install itself.
- ASSERT1(!::IsEqualGUID(kGoopdateGuid, app_guid));
-
- DWORD effective_policy = 0;
- if (!GetEffectivePolicyForApp(kRegValueInstallAppsDefault,
- kRegValueInstallAppPrefix,
- app_guid,
- &effective_policy)) {
- return kInstallPolicyDefault;
- }
-
- return kPolicyDisabled != effective_policy;
-}
-
-// Self-updates cannot be disabled.
-bool ConfigManager::CanUpdateApp(const GUID& app_guid,
- bool is_manual) const {
- if (::IsEqualGUID(kGoopdateGuid, app_guid)) {
- return true;
- }
-
- DWORD effective_policy = 0;
- if (!GetEffectivePolicyForApp(kRegValueUpdateAppsDefault,
- kRegValueUpdateAppPrefix,
- app_guid,
- &effective_policy)) {
- return kUpdatePolicyDefault;
- }
-
- if (kPolicyDisabled == effective_policy) {
- return false;
- }
- if ((kPolicyManualUpdatesOnly == effective_policy) && !is_manual) {
- return false;
- }
-
- return kUpdatePolicyDefault;
-}
-
-bool ConfigManager::AlwaysAllowCrashUploads() const {
- DWORD always_allow_crash_uploads = 0;
- RegKey::GetValue(MACHINE_REG_UPDATE_DEV,
- kRegValueAlwaysAllowCrashUploads,
- &always_allow_crash_uploads);
- return always_allow_crash_uploads != 0;
-}
-
-} // namespace omaha
« no previous file with comments | « common/config_manager.h ('k') | common/config_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698