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

Side by Side Diff: omaha_request_params.cc

Issue 2808082: AU: Remove instances of Omaha ID -- machine ID and user ID. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/update_engine.git
Patch Set: comment typo fix Created 10 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « omaha_request_params.h ('k') | omaha_request_params_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "update_engine/omaha_request_params.h" 5 #include "update_engine/omaha_request_params.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #include <sys/utsname.h> 9 #include <sys/utsname.h>
10 10
11 #include <map> 11 #include <map>
12 #include <string> 12 #include <string>
13 13
14 #include "base/string_util.h" 14 #include "base/string_util.h"
15 #include "update_engine/simple_key_value_store.h" 15 #include "update_engine/simple_key_value_store.h"
16 #include "update_engine/utils.h" 16 #include "update_engine/utils.h"
17 17
18 using std::map; 18 using std::map;
19 using std::string; 19 using std::string;
20 20
21 namespace {
22 const string OmahaIdPath() {
23 return string(chromeos_update_engine::utils::kStatefulPartition) +
24 "/etc/omaha_id";
25 }
26 } // namespace {}
27
28 namespace chromeos_update_engine { 21 namespace chromeos_update_engine {
29 22
30 const char* const OmahaRequestParams::kAppId( 23 const char* const OmahaRequestParams::kAppId(
31 "{87efface-864d-49a5-9bb3-4b050a7c227a}"); 24 "{87efface-864d-49a5-9bb3-4b050a7c227a}");
32 const char* const OmahaRequestParams::kOsPlatform("Chrome OS"); 25 const char* const OmahaRequestParams::kOsPlatform("Chrome OS");
33 const char* const OmahaRequestParams::kOsVersion("Indy"); 26 const char* const OmahaRequestParams::kOsVersion("Indy");
34 const char* const OmahaRequestParams::kUpdateUrl( 27 const char* const OmahaRequestParams::kUpdateUrl(
35 "https://tools.google.com/service/update2"); 28 "https://tools.google.com/service/update2");
36 29
37 bool OmahaRequestDeviceParams::Init(const std::string& in_app_version, 30 bool OmahaRequestDeviceParams::Init(const std::string& in_app_version,
38 const std::string& in_update_url) { 31 const std::string& in_update_url) {
39 TEST_AND_RETURN_FALSE(GetMachineId(&machine_id));
40 user_id = machine_id;
41 os_platform = OmahaRequestParams::kOsPlatform; 32 os_platform = OmahaRequestParams::kOsPlatform;
42 os_version = OmahaRequestParams::kOsVersion; 33 os_version = OmahaRequestParams::kOsVersion;
43 app_version = in_app_version.empty() ? 34 app_version = in_app_version.empty() ?
44 GetLsbValue("CHROMEOS_RELEASE_VERSION", "") : in_app_version; 35 GetLsbValue("CHROMEOS_RELEASE_VERSION", "") : in_app_version;
45 os_sp = app_version + "_" + GetMachineType(); 36 os_sp = app_version + "_" + GetMachineType();
46 os_board = GetLsbValue("CHROMEOS_RELEASE_BOARD", ""); 37 os_board = GetLsbValue("CHROMEOS_RELEASE_BOARD", "");
47 app_id = OmahaRequestParams::kAppId; 38 app_id = OmahaRequestParams::kAppId;
48 app_lang = "en-US"; 39 app_lang = "en-US";
49 app_track = GetLsbValue("CHROMEOS_RELEASE_TRACK", ""); 40 app_track = GetLsbValue("CHROMEOS_RELEASE_TRACK", "");
50 struct stat stbuf; 41 struct stat stbuf;
51 42
52 // Deltas are only okay if the /.nodelta file does not exist. 43 // Deltas are only okay if the /.nodelta file does not exist.
53 // If we don't know (i.e. stat() returns some unexpected error), 44 // If we don't know (i.e. stat() returns some unexpected error),
54 // then err on the side of caution and say deltas are not okay 45 // then err on the side of caution and say deltas are not okay
55 delta_okay = (stat((root_ + "/.nodelta").c_str(), &stbuf) < 0) && 46 delta_okay = (stat((root_ + "/.nodelta").c_str(), &stbuf) < 0) &&
56 (errno == ENOENT); 47 (errno == ENOENT);
57 48
58 update_url = in_update_url.empty() ? 49 update_url = in_update_url.empty() ?
59 GetLsbValue("CHROMEOS_AUSERVER", OmahaRequestParams::kUpdateUrl) : 50 GetLsbValue("CHROMEOS_AUSERVER", OmahaRequestParams::kUpdateUrl) :
60 in_update_url; 51 in_update_url;
61 return true; 52 return true;
62 } 53 }
63 54
64 namespace {
65 const size_t kGuidDataByteLength = 128 / 8;
66 const string::size_type kGuidStringLength = 38;
67 // Formats 16 bytes (128 bits) of data as a GUID:
68 // "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" where X is a hex digit
69 string GuidFromData(const unsigned char data[kGuidDataByteLength]) {
70 return StringPrintf(
71 "{%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X}",
72 data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7],
73 data[8], data[9], data[10], data[11], data[12], data[13], data[14],
74 data[15]);
75 }
76 }
77
78 // Returns true on success.
79 bool OmahaRequestDeviceParams::GetMachineId(std::string* out_id) const {
80 // Checks if we have an existing Machine ID.
81 const string omaha_id_path = root_ + OmahaIdPath();
82
83 if (utils::ReadFileToString(omaha_id_path, out_id) &&
84 out_id->size() == kGuidStringLength) {
85 return true;
86 }
87
88 // Creates a new ID.
89 int rand_fd = open("/dev/urandom", O_RDONLY, 0);
90 TEST_AND_RETURN_FALSE_ERRNO(rand_fd >= 0);
91 ScopedFdCloser rand_fd_closer(&rand_fd);
92 unsigned char buf[kGuidDataByteLength];
93 size_t bytes_read = 0;
94 while (bytes_read < sizeof(buf)) {
95 ssize_t rc = read(rand_fd, buf + bytes_read, sizeof(buf) - bytes_read);
96 TEST_AND_RETURN_FALSE_ERRNO(rc > 0);
97 bytes_read += rc;
98 }
99 string guid = GuidFromData(buf);
100 TEST_AND_RETURN_FALSE(
101 utils::WriteFile(omaha_id_path.c_str(), guid.data(), guid.size()));
102 *out_id = guid;
103 return true;
104 }
105
106 string OmahaRequestDeviceParams::GetLsbValue( 55 string OmahaRequestDeviceParams::GetLsbValue(
107 const string& key, const string& default_value) const { 56 const string& key, const string& default_value) const {
108 string files[] = {string(utils::kStatefulPartition) + "/etc/lsb-release", 57 string files[] = {string(utils::kStatefulPartition) + "/etc/lsb-release",
109 "/etc/lsb-release"}; 58 "/etc/lsb-release"};
110 for (unsigned int i = 0; i < arraysize(files); ++i) { 59 for (unsigned int i = 0; i < arraysize(files); ++i) {
111 // TODO(adlr): make sure files checked are owned as root (and all 60 // TODO(adlr): make sure files checked are owned as root (and all
112 // their parents are recursively, too). 61 // their parents are recursively, too).
113 string file_data; 62 string file_data;
114 if (!utils::ReadFileToString(root_ + files[i], &file_data)) 63 if (!utils::ReadFileToString(root_ + files[i], &file_data))
115 continue; 64 continue;
116 65
117 map<string, string> data = simple_key_value_store::ParseString(file_data); 66 map<string, string> data = simple_key_value_store::ParseString(file_data);
118 if (utils::MapContainsKey(data, key)) 67 if (utils::MapContainsKey(data, key))
119 return data[key]; 68 return data[key];
120 } 69 }
121 // not found 70 // not found
122 return default_value; 71 return default_value;
123 } 72 }
124 73
125 string OmahaRequestDeviceParams::GetMachineType() const { 74 string OmahaRequestDeviceParams::GetMachineType() const {
126 struct utsname buf; 75 struct utsname buf;
127 string ret; 76 string ret;
128 if (uname(&buf) == 0) 77 if (uname(&buf) == 0)
129 ret = buf.machine; 78 ret = buf.machine;
130 return ret; 79 return ret;
131 } 80 }
132 81
133 } // namespace chromeos_update_engine 82 } // namespace chromeos_update_engine
OLDNEW
« no previous file with comments | « omaha_request_params.h ('k') | omaha_request_params_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698