OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #include "remoting/host/chromoting_host.h" | 5 #include "remoting/host/chromoting_host.h" |
6 | 6 |
7 #include "base/stl_util-inl.h" | 7 #include "base/stl_util-inl.h" |
8 #include "base/task.h" | 8 #include "base/task.h" |
9 #include "build/build_config.h" | 9 #include "build/build_config.h" |
10 #include "remoting/base/constants.h" | 10 #include "remoting/base/constants.h" |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 AutoLock auto_lock(lock_); | 161 AutoLock auto_lock(lock_); |
162 if (state_ != kStarted) | 162 if (state_ != kStarted) |
163 return false; | 163 return false; |
164 | 164 |
165 DCHECK_EQ(jingle_client_.get(), jingle_client); | 165 DCHECK_EQ(jingle_client_.get(), jingle_client); |
166 | 166 |
167 // TODO(hclam): Allow multiple clients to connect to the host. | 167 // TODO(hclam): Allow multiple clients to connect to the host. |
168 if (client_.get()) | 168 if (client_.get()) |
169 return false; | 169 return false; |
170 | 170 |
| 171 // Check that the user has access to the host. |
| 172 if (!access_verifier_.VerifyPermissions(jid)) |
| 173 return false; |
| 174 |
171 LOG(INFO) << "Client connected: " << jid << std::endl; | 175 LOG(INFO) << "Client connected: " << jid << std::endl; |
172 | 176 |
173 // If we accept the connected then create a client object and set the | 177 // If we accept the connected then create a client object and set the |
174 // callback. | 178 // callback. |
175 client_ = new ClientConnection(context_->main_message_loop(), | 179 client_ = new ClientConnection(context_->main_message_loop(), |
176 new ProtocolDecoder(), this); | 180 new ProtocolDecoder(), this); |
177 *channel_callback = client_.get(); | 181 *channel_callback = client_.get(); |
178 return true; | 182 return true; |
179 } | 183 } |
180 | 184 |
(...skipping 24 matching lines...) Expand all Loading... |
205 state_ = kStarted; | 209 state_ = kStarted; |
206 } | 210 } |
207 | 211 |
208 // Save the shutdown task. | 212 // Save the shutdown task. |
209 shutdown_task_.reset(shutdown_task); | 213 shutdown_task_.reset(shutdown_task); |
210 | 214 |
211 std::string xmpp_login; | 215 std::string xmpp_login; |
212 std::string xmpp_auth_token; | 216 std::string xmpp_auth_token; |
213 if (!config_->GetString(kXmppLoginConfigPath, &xmpp_login) || | 217 if (!config_->GetString(kXmppLoginConfigPath, &xmpp_login) || |
214 !config_->GetString(kXmppAuthTokenConfigPath, &xmpp_auth_token)) { | 218 !config_->GetString(kXmppAuthTokenConfigPath, &xmpp_auth_token)) { |
215 LOG(ERROR) << "XMMP credentials are not defined in config."; | 219 LOG(ERROR) << "XMPP credentials are not defined in the config."; |
216 return; | 220 return; |
217 } | 221 } |
218 | 222 |
| 223 if (!access_verifier_.Init(config_)) |
| 224 return; |
| 225 |
219 // Connect to the talk network with a JingleClient. | 226 // Connect to the talk network with a JingleClient. |
220 jingle_client_ = new JingleClient(context_->jingle_thread()); | 227 jingle_client_ = new JingleClient(context_->jingle_thread()); |
221 jingle_client_->Init(xmpp_login, xmpp_auth_token, | 228 jingle_client_->Init(xmpp_login, xmpp_auth_token, |
222 kChromotingTokenServiceName, this); | 229 kChromotingTokenServiceName, this); |
223 | 230 |
224 heartbeat_sender_ = new HeartbeatSender(); | 231 heartbeat_sender_ = new HeartbeatSender(); |
225 if (!heartbeat_sender_->Init(config_, jingle_client_.get())) { | 232 if (!heartbeat_sender_->Init(config_, jingle_client_.get())) { |
226 LOG(ERROR) << "Failed to initialize HeartbeatSender."; | 233 LOG(ERROR) << "Failed to initialize HeartbeatSender."; |
227 return; | 234 return; |
228 } | 235 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 heartbeat_sender_->Stop(); | 267 heartbeat_sender_->Stop(); |
261 } | 268 } |
262 | 269 |
263 // Lastly call the shutdown task. | 270 // Lastly call the shutdown task. |
264 if (shutdown_task_.get()) { | 271 if (shutdown_task_.get()) { |
265 shutdown_task_->Run(); | 272 shutdown_task_->Run(); |
266 } | 273 } |
267 } | 274 } |
268 | 275 |
269 } // namespace remoting | 276 } // namespace remoting |
OLD | NEW |