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

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

Issue 722743003: Reporting of policy errors via host-offline-reason: part 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month 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
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. 5 // This file implements a standalone host process for Me2Me.
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/at_exit.h" 9 #include "base/at_exit.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 void CreateAuthenticatorFactory(); 227 void CreateAuthenticatorFactory();
228 228
229 // Tear down resources that run on the UI thread. 229 // Tear down resources that run on the UI thread.
230 void ShutdownOnUiThread(); 230 void ShutdownOnUiThread();
231 231
232 // Applies the host config, returning true if successful. 232 // Applies the host config, returning true if successful.
233 bool ApplyConfig(scoped_ptr<JsonHostConfig> config); 233 bool ApplyConfig(scoped_ptr<JsonHostConfig> config);
234 234
235 // Handles policy updates, by calling On*PolicyUpdate methods. 235 // Handles policy updates, by calling On*PolicyUpdate methods.
236 void OnPolicyUpdate(scoped_ptr<base::DictionaryValue> policies); 236 void OnPolicyUpdate(scoped_ptr<base::DictionaryValue> policies);
237 void OnPolicyError();
237 void ApplyHostDomainPolicy(); 238 void ApplyHostDomainPolicy();
238 void ApplyUsernamePolicy(); 239 void ApplyUsernamePolicy();
239 bool OnHostDomainPolicyUpdate(base::DictionaryValue* policies); 240 bool OnHostDomainPolicyUpdate(base::DictionaryValue* policies);
240 bool OnUsernamePolicyUpdate(base::DictionaryValue* policies); 241 bool OnUsernamePolicyUpdate(base::DictionaryValue* policies);
241 bool OnNatPolicyUpdate(base::DictionaryValue* policies); 242 bool OnNatPolicyUpdate(base::DictionaryValue* policies);
242 bool OnRelayPolicyUpdate(base::DictionaryValue* policies); 243 bool OnRelayPolicyUpdate(base::DictionaryValue* policies);
243 bool OnUdpPortPolicyUpdate(base::DictionaryValue* policies); 244 bool OnUdpPortPolicyUpdate(base::DictionaryValue* policies);
244 bool OnCurtainPolicyUpdate(base::DictionaryValue* policies); 245 bool OnCurtainPolicyUpdate(base::DictionaryValue* policies);
245 bool OnHostTalkGadgetPrefixPolicyUpdate(base::DictionaryValue* policies); 246 bool OnHostTalkGadgetPrefixPolicyUpdate(base::DictionaryValue* policies);
246 bool OnHostTokenUrlPolicyUpdate(base::DictionaryValue* policies); 247 bool OnHostTokenUrlPolicyUpdate(base::DictionaryValue* policies);
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 } 521 }
521 522
522 if (state_ == HOST_INITIALIZING) { 523 if (state_ == HOST_INITIALIZING) {
523 // TODO(sergeyu): Currently OnPolicyUpdate() assumes that host config is 524 // TODO(sergeyu): Currently OnPolicyUpdate() assumes that host config is
524 // already loaded so PolicyWatcher has to be started here. Separate policy 525 // already loaded so PolicyWatcher has to be started here. Separate policy
525 // loading from policy verifications and move |policy_watcher_| 526 // loading from policy verifications and move |policy_watcher_|
526 // initialization to StartOnNetworkThread(). 527 // initialization to StartOnNetworkThread().
527 policy_watcher_.reset( 528 policy_watcher_.reset(
528 policy_hack::PolicyWatcher::Create(context_->file_task_runner())); 529 policy_hack::PolicyWatcher::Create(context_->file_task_runner()));
529 policy_watcher_->StartWatching( 530 policy_watcher_->StartWatching(
530 base::Bind(&HostProcess::OnPolicyUpdate, base::Unretained(this))); 531 base::Bind(&HostProcess::OnPolicyUpdate, base::Unretained(this)),
532 base::Bind(&HostProcess::OnPolicyError, base::Unretained(this)));
531 } else { 533 } else {
532 // Reapply policies that could be affected by a new config. 534 // Reapply policies that could be affected by a new config.
533 ApplyHostDomainPolicy(); 535 ApplyHostDomainPolicy();
534 ApplyUsernamePolicy(); 536 ApplyUsernamePolicy();
535 537
536 if (state_ == HOST_STARTED) { 538 if (state_ == HOST_STARTED) {
537 // TODO(sergeyu): Here we assume that PIN is the only part of the config 539 // TODO(sergeyu): Here we assume that PIN is the only part of the config
538 // that may change while the service is running. Change ApplyConfig() to 540 // that may change while the service is running. Change ApplyConfig() to
539 // detect other changes in the config and restart host if necessary here. 541 // detect other changes in the config and restart host if necessary here.
540 CreateAuthenticatorFactory(); 542 CreateAuthenticatorFactory();
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 third_party_auth_config_, 618 third_party_auth_config_,
617 key_pair_, context_->url_request_context_getter())); 619 key_pair_, context_->url_request_context_getter()));
618 factory = protocol::Me2MeHostAuthenticatorFactory::CreateWithThirdPartyAuth( 620 factory = protocol::Me2MeHostAuthenticatorFactory::CreateWithThirdPartyAuth(
619 use_service_account_, host_owner_, local_certificate, key_pair_, 621 use_service_account_, host_owner_, local_certificate, key_pair_,
620 token_validator_factory.Pass()); 622 token_validator_factory.Pass());
621 623
622 } else { 624 } else {
623 // TODO(rmsousa): If the policy is bad the host should not go online. It 625 // TODO(rmsousa): If the policy is bad the host should not go online. It
624 // should keep running, but not connected, until the policies are fixed. 626 // should keep running, but not connected, until the policies are fixed.
625 // Having it show up as online and then reject all clients is misleading. 627 // Having it show up as online and then reject all clients is misleading.
628 // TODO(lukasza): code review please: the new ShutdownHost call below seems
Lambros 2014/11/13 00:30:27 Please remove this. When requesting a code review,
Łukasz Anforowicz 2014/11/13 17:48:09 Done.
629 // to match the TODO from rmsousa above (at least in spirit)
630 // If this makes sense, then I can add this call in the next
631 // check-in.
626 LOG(ERROR) << "One of the third-party token URLs is empty or invalid. " 632 LOG(ERROR) << "One of the third-party token URLs is empty or invalid. "
627 << "Host will reject all clients until policies are corrected. " 633 << "Host will reject all clients until policies are corrected. "
628 << "TokenUrl: " << third_party_auth_config_.token_url << ", " 634 << "TokenUrl: " << third_party_auth_config_.token_url << ", "
629 << "TokenValidationUrl: " 635 << "TokenValidationUrl: "
630 << third_party_auth_config_.token_validation_url; 636 << third_party_auth_config_.token_validation_url;
631 factory = protocol::Me2MeHostAuthenticatorFactory::CreateRejecting(); 637 factory = protocol::Me2MeHostAuthenticatorFactory::CreateRejecting();
632 } 638 }
633 639
634 #if defined(OS_POSIX) 640 #if defined(OS_POSIX)
635 // On Linux and Mac, perform a PAM authorization step after authentication. 641 // On Linux and Mac, perform a PAM authorization step after authentication.
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 restart_required |= OnPairingPolicyUpdate(policies.get()); 931 restart_required |= OnPairingPolicyUpdate(policies.get());
926 restart_required |= OnGnubbyAuthPolicyUpdate(policies.get()); 932 restart_required |= OnGnubbyAuthPolicyUpdate(policies.get());
927 933
928 if (state_ == HOST_INITIALIZING) { 934 if (state_ == HOST_INITIALIZING) {
929 StartHost(); 935 StartHost();
930 } else if (state_ == HOST_STARTED && restart_required) { 936 } else if (state_ == HOST_STARTED && restart_required) {
931 RestartHost(); 937 RestartHost();
932 } 938 }
933 } 939 }
934 940
941 void HostProcess::OnPolicyError() {
942 context_->network_task_runner()->PostTask(
943 FROM_HERE,
944 base::Bind(
Lambros 2014/11/13 00:30:27 Formatting is a bit odd - see examples elsewhere,
Łukasz Anforowicz 2014/11/13 17:48:09 Ok to +4 rather than +2. Let's discuss the other
945 &HostProcess::ShutdownHost,
946 this,
947 kInvalidHostConfigurationExitCode));
948 }
949
935 void HostProcess::ApplyHostDomainPolicy() { 950 void HostProcess::ApplyHostDomainPolicy() {
936 HOST_LOG << "Policy sets host domain: " << host_domain_; 951 HOST_LOG << "Policy sets host domain: " << host_domain_;
937 952
938 // If the user does not have a Google email, their client JID will not be 953 // If the user does not have a Google email, their client JID will not be
939 // based on their email. In that case, the username/host domain policies would 954 // based on their email. In that case, the username/host domain policies would
940 // be meaningless, since there is no way to check that the JID attempting to 955 // be meaningless, since there is no way to check that the JID attempting to
941 // connect actually corresponds to the owner email in question. 956 // connect actually corresponds to the owner email in question.
942 if (host_owner_ != host_owner_email_) { 957 if (host_owner_ != host_owner_email_) {
943 LOG(ERROR) << "The username and host domain policies cannot be enabled for " 958 LOG(ERROR) << "The username and host domain policies cannot be enabled for "
944 << "accounts with a non-Google email."; 959 << "accounts with a non-Google email.";
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
1474 int exit_code = kSuccessExitCode; 1489 int exit_code = kSuccessExitCode;
1475 new HostProcess(context.Pass(), &exit_code); 1490 new HostProcess(context.Pass(), &exit_code);
1476 1491
1477 // Run the main (also UI) message loop until the host no longer needs it. 1492 // Run the main (also UI) message loop until the host no longer needs it.
1478 message_loop.Run(); 1493 message_loop.Run();
1479 1494
1480 return exit_code; 1495 return exit_code;
1481 } 1496 }
1482 1497
1483 } // namespace remoting 1498 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698