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

Side by Side Diff: remoting/host/remoting_me2me_host.cc

Issue 9270031: Enable V2 authentication for Me2Me host. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: - Created 8 years, 11 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 | « remoting/host/host_config.cc ('k') | remoting/host/simple_host_process.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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium 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 // This file implements a standalone host process for Me2Me, which is currently 5 // This file implements a standalone host process for Me2Me, which is currently
6 // used for the Linux-only Virtual Me2Me build. 6 // used for the Linux-only Virtual Me2Me build.
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/at_exit.h" 10 #include "base/at_exit.h"
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 &HostProcess::StartHost, base::Unretained(this))); 103 &HostProcess::StartHost, base::Unretained(this)));
104 104
105 message_loop_.Run(); 105 message_loop_.Run();
106 106
107 return 0; 107 return 0;
108 } 108 }
109 109
110 private: 110 private:
111 // Read Host config from disk, returning true if successful. 111 // Read Host config from disk, returning true if successful.
112 bool LoadConfig(base::MessageLoopProxy* io_message_loop) { 112 bool LoadConfig(base::MessageLoopProxy* io_message_loop) {
113 scoped_refptr<remoting::JsonHostConfig> host_config = 113 scoped_refptr<JsonHostConfig> host_config =
114 new remoting::JsonHostConfig(host_config_path_, io_message_loop); 114 new JsonHostConfig(host_config_path_, io_message_loop);
115 scoped_refptr<remoting::JsonHostConfig> auth_config = 115 scoped_refptr<JsonHostConfig> auth_config =
116 new remoting::JsonHostConfig(auth_config_path_, io_message_loop); 116 new JsonHostConfig(auth_config_path_, io_message_loop);
117 117
118 std::string failed_path; 118 std::string failed_path;
119 if (!host_config->Read()) { 119 if (!host_config->Read()) {
120 failed_path = host_config_path_.value(); 120 failed_path = host_config_path_.value();
121 } else if (!auth_config->Read()) { 121 } else if (!auth_config->Read()) {
122 failed_path = auth_config_path_.value(); 122 failed_path = auth_config_path_.value();
123 } 123 }
124 if (!failed_path.empty()) { 124 if (!failed_path.empty()) {
125 LOG(ERROR) << "Failed to read configuration file " << failed_path; 125 LOG(ERROR) << "Failed to read configuration file " << failed_path;
126 return false; 126 return false;
127 } 127 }
128 128
129 if (!host_config->GetString(kHostIdConfigPath, &host_id_)) { 129 if (!host_config->GetString(kHostIdConfigPath, &host_id_)) {
130 LOG(ERROR) << "host_id is not defined in the config."; 130 LOG(ERROR) << "host_id is not defined in the config.";
131 return false; 131 return false;
132 } 132 }
133 133
134 if (!key_pair_.Load(host_config)) { 134 if (!key_pair_.Load(host_config)) {
135 return false; 135 return false;
136 } 136 }
137 137
138 std::string host_secret_hash_string;
139 if (!host_config->GetString(kHostSecretHashConfigPath,
140 &host_secret_hash_string)) {
141 host_secret_hash_string = "plain:";
142 }
143
144 if (!host_secret_hash_.Parse(host_secret_hash_string)) {
145 LOG(ERROR) << "Invalid host_secret_hash.";
146 return false;
147 }
148
138 // Use an XMPP connection to the Talk network for session signalling. 149 // Use an XMPP connection to the Talk network for session signalling.
139 if (!auth_config->GetString(kXmppLoginConfigPath, &xmpp_login_) || 150 if (!auth_config->GetString(kXmppLoginConfigPath, &xmpp_login_) ||
140 !auth_config->GetString(kXmppAuthTokenConfigPath, &xmpp_auth_token_)) { 151 !auth_config->GetString(kXmppAuthTokenConfigPath, &xmpp_auth_token_)) {
141 LOG(ERROR) << "XMPP credentials are not defined in the config."; 152 LOG(ERROR) << "XMPP credentials are not defined in the config.";
142 return false; 153 return false;
143 } 154 }
144 155
145 if (!auth_config->GetString(remoting::kXmppAuthServiceConfigPath, 156 if (!auth_config->GetString(kXmppAuthServiceConfigPath,
146 &xmpp_auth_service_)) { 157 &xmpp_auth_service_)) {
147 // For the me2me host, we assume we use the ClientLogin token for 158 // For the me2me host, we assume we use the ClientLogin token for
148 // chromiumsync because we do not have an HTTP stack with which we can 159 // chromiumsync because we do not have an HTTP stack with which we can
149 // easily request an OAuth2 access token even if we had a RefreshToken for 160 // easily request an OAuth2 access token even if we had a RefreshToken for
150 // the account. 161 // the account.
151 xmpp_auth_service_ = remoting::kChromotingTokenDefaultServiceName; 162 xmpp_auth_service_ = kChromotingTokenDefaultServiceName;
152 } 163 }
153 164
154 return true; 165 return true;
155 } 166 }
156 167
157 void StartHost() { 168 void StartHost() {
158 DCHECK(context_.network_message_loop()->BelongsToCurrentThread()); 169 DCHECK(context_.network_message_loop()->BelongsToCurrentThread());
159 170
160 signal_strategy_.reset( 171 signal_strategy_.reset(
161 new XmppSignalStrategy(context_.jingle_thread(), xmpp_login_, 172 new XmppSignalStrategy(context_.jingle_thread(), xmpp_login_,
(...skipping 14 matching lines...) Expand all
176 heartbeat_sender_.reset( 187 heartbeat_sender_.reset(
177 new HeartbeatSender(host_id_, signal_strategy_.get(), &key_pair_)); 188 new HeartbeatSender(host_id_, signal_strategy_.get(), &key_pair_));
178 189
179 log_to_server_.reset( 190 log_to_server_.reset(
180 new LogToServer(host_, ServerLogEntry::ME2ME, signal_strategy_.get())); 191 new LogToServer(host_, ServerLogEntry::ME2ME, signal_strategy_.get()));
181 host_event_logger_.reset(new HostEventLogger(host_, kApplicationName)); 192 host_event_logger_.reset(new HostEventLogger(host_, kApplicationName));
182 193
183 host_->Start(); 194 host_->Start();
184 195
185 // Create authenticator factory. 196 // Create authenticator factory.
186 //
187 // TODO(sergeyu): Currently empty PIN is used. This is a temporary
188 // hack pending us adding a way to set a PIN. crbug.com/105214 .
189 scoped_ptr<protocol::AuthenticatorFactory> factory( 197 scoped_ptr<protocol::AuthenticatorFactory> factory(
190 new protocol::Me2MeHostAuthenticatorFactory( 198 new protocol::Me2MeHostAuthenticatorFactory(
191 xmpp_login_, key_pair_.GenerateCertificate(), 199 xmpp_login_, key_pair_.GenerateCertificate(),
192 *key_pair_.private_key(), "")); 200 *key_pair_.private_key(), host_secret_hash_));
193 host_->SetAuthenticatorFactory(factory.Pass()); 201 host_->SetAuthenticatorFactory(factory.Pass());
194 } 202 }
195 203
196 MessageLoop message_loop_; 204 MessageLoop message_loop_;
197 base::Thread file_io_thread_; 205 base::Thread file_io_thread_;
198 remoting::ChromotingHostContext context_; 206 ChromotingHostContext context_;
199 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; 207 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_;
200 208
201 FilePath auth_config_path_; 209 FilePath auth_config_path_;
202 FilePath host_config_path_; 210 FilePath host_config_path_;
203 211
204 std::string host_id_; 212 std::string host_id_;
205 HostKeyPair key_pair_; 213 HostKeyPair key_pair_;
214 protocol::SharedSecretHash host_secret_hash_;
206 std::string xmpp_login_; 215 std::string xmpp_login_;
207 std::string xmpp_auth_token_; 216 std::string xmpp_auth_token_;
208 std::string xmpp_auth_service_; 217 std::string xmpp_auth_service_;
209 218
210 scoped_ptr<SignalStrategy> signal_strategy_; 219 scoped_ptr<SignalStrategy> signal_strategy_;
211 scoped_ptr<SignalingConnector> signaling_connector_; 220 scoped_ptr<SignalingConnector> signaling_connector_;
212 scoped_ptr<DesktopEnvironment> desktop_environment_; 221 scoped_ptr<DesktopEnvironment> desktop_environment_;
213 scoped_ptr<remoting::HeartbeatSender> heartbeat_sender_; 222 scoped_ptr<HeartbeatSender> heartbeat_sender_;
214 scoped_ptr<LogToServer> log_to_server_; 223 scoped_ptr<LogToServer> log_to_server_;
215 scoped_ptr<HostEventLogger> host_event_logger_; 224 scoped_ptr<HostEventLogger> host_event_logger_;
216 scoped_refptr<ChromotingHost> host_; 225 scoped_refptr<ChromotingHost> host_;
217 }; 226 };
218 227
219 } // namespace remoting 228 } // namespace remoting
220 229
221 int main(int argc, char** argv) { 230 int main(int argc, char** argv) {
222 CommandLine::Init(argc, argv); 231 CommandLine::Init(argc, argv);
223 232
224 // This object instance is required by Chrome code (for example, 233 // This object instance is required by Chrome code (for example,
225 // LazyInstance, MessageLoop). 234 // LazyInstance, MessageLoop).
226 base::AtExitManager exit_manager; 235 base::AtExitManager exit_manager;
227 236
228 const CommandLine* cmd_line = CommandLine::ForCurrentProcess(); 237 const CommandLine* cmd_line = CommandLine::ForCurrentProcess();
229 238
230 #if defined(TOOLKIT_USES_GTK) 239 #if defined(TOOLKIT_USES_GTK)
231 // Required for any calls into GTK functions, such as the Disconnect and 240 // Required for any calls into GTK functions, such as the Disconnect and
232 // Continue windows, though these should not be used for the Me2Me case 241 // Continue windows, though these should not be used for the Me2Me case
233 // (crbug.com/104377). 242 // (crbug.com/104377).
234 gfx::GtkInitFromCommandLine(*cmd_line); 243 gfx::GtkInitFromCommandLine(*cmd_line);
235 #endif // TOOLKIT_USES_GTK 244 #endif // TOOLKIT_USES_GTK
236 245
237 remoting::HostProcess me2me_host; 246 remoting::HostProcess me2me_host;
238 me2me_host.InitWithCommandLine(cmd_line); 247 me2me_host.InitWithCommandLine(cmd_line);
239 248
240 return me2me_host.Run(); 249 return me2me_host.Run();
241 } 250 }
OLDNEW
« no previous file with comments | « remoting/host/host_config.cc ('k') | remoting/host/simple_host_process.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698