15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/policy/device_management_service_configuration.h" 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/basictypes.h" 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/logging.h" 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/strings/stringprintf.h" 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/sys_info.h" 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/common/chrome_version_info.h" 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "components/policy/core/browser/browser_policy_connector.h" 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#if defined(OS_CHROMEOS) 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chromeos/system/statistics_provider.h" 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#endif 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace policy { 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuDeviceManagementServiceConfiguration::DeviceManagementServiceConfiguration( 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const std::string& server_url) 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu : server_url_(server_url) { 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuDeviceManagementServiceConfiguration::~DeviceManagementServiceConfiguration() { 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liustd::string DeviceManagementServiceConfiguration::GetServerUrl() { 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return server_url_; 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liustd::string DeviceManagementServiceConfiguration::GetAgentParameter() { 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu chrome::VersionInfo version_info; 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return base::StringPrintf("%s %s(%s)", 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu version_info.Name().c_str(), 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu version_info.Version().c_str(), 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu version_info.LastChange().c_str()); 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liustd::string DeviceManagementServiceConfiguration::GetPlatformParameter() { 415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string os_name = base::SysInfo::OperatingSystemName(); 425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string os_hardware = base::SysInfo::OperatingSystemArchitecture(); 435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#if defined(OS_CHROMEOS) 455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu chromeos::system::StatisticsProvider* provider = 465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu chromeos::system::StatisticsProvider::GetInstance(); 475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string hwclass; 495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu if (!provider->GetMachineStatistic(chromeos::system::kHardwareClassKey, 505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu &hwclass)) { 515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu LOG(ERROR) << "Failed to get machine information"; 525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu os_name += ",CrOS," + base::SysInfo::GetLsbReleaseBoard(); 545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu os_hardware += "," + hwclass; 555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#endif 565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu std::string os_version("-"); 585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_CHROMEOS) 595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu int32 os_major_version = 0; 605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu int32 os_minor_version = 0; 615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu int32 os_bugfix_version = 0; 625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu base::SysInfo::OperatingSystemVersionNumbers(&os_major_version, 635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu &os_minor_version, 645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu &os_bugfix_version); 655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu os_version = base::StringPrintf("%d.%d.%d", 665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu os_major_version, 675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu os_minor_version, 685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu os_bugfix_version); 695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#endif 705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return base::StringPrintf( 725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu "%s|%s|%s", os_name.c_str(), os_hardware.c_str(), os_version.c_str()); 735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace policy 76