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

Unified Diff: remoting/host/remoting_me2me_host.cc

Issue 11275178: Enforce the RemoteAccessHostRequireCurtain policy on all platforms. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add missing member to CurtainModeWin. Created 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/host/curtaining_host_observer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/remoting_me2me_host.cc
diff --git a/remoting/host/remoting_me2me_host.cc b/remoting/host/remoting_me2me_host.cc
index cdf6962b31ee2a892356f655cbb26b9d5e502811..fbcc7fade667aaffe628ca2fb9ba82a803479a9a 100644
--- a/remoting/host/remoting_me2me_host.cc
+++ b/remoting/host/remoting_me2me_host.cc
@@ -243,6 +243,7 @@ class HostProcess
scoped_ptr<CurtainMode> curtain_;
scoped_ptr<CurtainingHostObserver> curtaining_host_observer_;
+ bool curtain_required_;
bool restarting_;
bool shutting_down_;
@@ -270,6 +271,7 @@ class HostProcess
HostProcess::HostProcess(scoped_ptr<ChromotingHostContext> context)
: context_(context.Pass()),
allow_nat_traversal_(true),
+ curtain_required_(false),
restarting_(false),
shutting_down_(false),
desktop_resizer_(DesktopResizer::Create()),
@@ -673,6 +675,8 @@ bool HostProcess::OnHostDomainPolicyUpdate(const std::string& host_domain) {
// Returns true if the host has to be restarted after this policy update.
DCHECK(context_->network_task_runner()->BelongsToCurrentThread());
+ LOG(INFO) << "Policy sets host domain: " << host_domain;
+
if (!host_domain.empty() &&
!EndsWith(xmpp_login_, std::string("@") + host_domain, false)) {
Shutdown(kInvalidHostDomainExitCode);
@@ -685,12 +689,16 @@ bool HostProcess::OnUsernamePolicyUpdate(bool host_username_match_required) {
DCHECK(context_->network_task_runner()->BelongsToCurrentThread());
if (host_username_match_required) {
+ LOG(INFO) << "Policy requires host username match.";
if (!CanGetUsername() ||
!StartsWithASCII(xmpp_login_, GetUsername() + std::string("@"),
false)) {
Shutdown(kUsernameMismatchExitCode);
}
+ } else {
+ LOG(INFO) << "Policy does not require host username match.";
}
+
return false;
}
@@ -699,8 +707,11 @@ bool HostProcess::OnNatPolicyUpdate(bool nat_traversal_enabled) {
DCHECK(context_->network_task_runner()->BelongsToCurrentThread());
if (allow_nat_traversal_ != nat_traversal_enabled) {
+ if (nat_traversal_enabled)
+ LOG(INFO) << "Policy enables NAT traversal.";
+ else
+ LOG(INFO) << "Policy disables NAT traversal.";
allow_nat_traversal_ = nat_traversal_enabled;
- LOG(INFO) << "Updated NAT policy.";
return true;
}
return false;
@@ -712,10 +723,12 @@ bool HostProcess::OnCurtainPolicyUpdate(bool curtain_required) {
#if defined(OS_MACOSX)
if (curtain_required) {
- // If curtain mode is required, then we can't currently support remoting
- // the login screen. This is because we don't curtain the login screen
- // and the current daemon architecture means that the connction is closed
- // immediately after login, leaving the host system uncurtained.
+ // When curtain mode is in effect on Mac, the host process runs in the
+ // user's switched-out session, but launchd will also run an instance at
+ // the console login screen. Even if no user is currently logged-on, we
+ // can't support remote-access to the login screen because the current host
+ // process model disconnects the client during login, which would leave
+ // the logged in session un-curtained on the console until they reconnect.
//
// TODO(jamiewalch): Fix this once we have implemented the multi-process
// daemon architecture (crbug.com/134894)
@@ -725,9 +738,14 @@ bool HostProcess::OnCurtainPolicyUpdate(bool curtain_required) {
}
}
#endif
- if (curtain_->required() != curtain_required) {
- LOG(INFO) << "Updated curtain policy.";
- curtain_->set_required(curtain_required);
+
+ if (curtain_required_ != curtain_required) {
+ if (curtain_required)
+ LOG(ERROR) << "Policy requires curtain-mode.";
+ else
+ LOG(ERROR) << "Policy does not require curtain-mode.";
+ curtain_required_ = curtain_required;
+ curtaining_host_observer_->SetEnableCurtaining(curtain_required_);
return true;
}
return false;
@@ -739,7 +757,7 @@ bool HostProcess::OnHostTalkGadgetPrefixPolicyUpdate(
DCHECK(context_->network_task_runner()->BelongsToCurrentThread());
if (talkgadget_prefix != talkgadget_prefix_) {
- LOG(INFO) << "Updated talkgadget policy.";
+ LOG(INFO) << "Policy sets talkgadget prefix: " << talkgadget_prefix;
talkgadget_prefix_ = talkgadget_prefix;
return true;
}
@@ -815,10 +833,11 @@ void HostProcess::StartHost() {
new ResizingHostObserver(desktop_resizer_.get(), host_));
#endif
- // Curtain mode is currently broken on Mac (the only supported platform),
- // so it's disabled until we've had time to fully investigate.
- // curtaining_host_observer_.reset(new CurtainingHostObserver(
- // curtain_.get(), host_));
+ // Create a host observer to enable/disable curtain mode as clients connect
+ // and disconnect.
+ curtaining_host_observer_.reset(new CurtainingHostObserver(
+ curtain_.get(), host_));
+ curtaining_host_observer_->SetEnableCurtaining(curtain_required_);
if (host_user_interface_.get()) {
host_user_interface_->Start(
« no previous file with comments | « remoting/host/curtaining_host_observer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698