Index: remoting/host/remoting_me2me_host.cc |
diff --git a/remoting/host/remoting_me2me_host.cc b/remoting/host/remoting_me2me_host.cc |
index 15b79076ce4aa2726bc64a2b37d42d5bddf91a45..e4aacabd86419eac6cc7f5ca08a295cc3c9e0d70 100644 |
--- a/remoting/host/remoting_me2me_host.cc |
+++ b/remoting/host/remoting_me2me_host.cc |
@@ -28,23 +28,23 @@ |
#include "remoting/base/breakpad.h" |
#include "remoting/base/constants.h" |
#include "remoting/host/branding.h" |
-#include "remoting/host/constants.h" |
-#include "remoting/host/video_frame_capturer.h" |
#include "remoting/host/chromoting_host.h" |
#include "remoting/host/chromoting_host_context.h" |
+#include "remoting/host/composite_host_config.h" |
+#include "remoting/host/constants.h" |
#include "remoting/host/desktop_environment.h" |
#include "remoting/host/event_executor.h" |
#include "remoting/host/heartbeat_sender.h" |
#include "remoting/host/host_config.h" |
#include "remoting/host/host_event_logger.h" |
#include "remoting/host/host_user_interface.h" |
-#include "remoting/host/json_host_config.h" |
#include "remoting/host/log_to_server.h" |
#include "remoting/host/network_settings.h" |
#include "remoting/host/policy_hack/policy_watcher.h" |
#include "remoting/host/session_manager_factory.h" |
#include "remoting/host/signaling_connector.h" |
#include "remoting/host/usage_stats_consent.h" |
+#include "remoting/host/video_frame_capturer.h" |
#include "remoting/jingle_glue/xmpp_signal_strategy.h" |
#include "remoting/protocol/me2me_host_authenticator_factory.h" |
@@ -70,8 +70,6 @@ const char kApplicationName[] = "chromoting"; |
const char kAuthConfigSwitchName[] = "auth-config"; |
const char kHostConfigSwitchName[] = "host-config"; |
-const FilePath::CharType kDefaultAuthConfigFile[] = |
- FILE_PATH_LITERAL("auth.json"); |
const FilePath::CharType kDefaultHostConfigFile[] = |
FILE_PATH_LITERAL("host.json"); |
@@ -113,23 +111,24 @@ class HostProcess |
&HostProcess::ConfigUpdatedDelayed)); |
} |
- void InitWithCommandLine(const CommandLine* cmd_line) { |
+ bool InitWithCommandLine(const CommandLine* cmd_line) { |
FilePath default_config_dir = remoting::GetConfigDir(); |
if (cmd_line->HasSwitch(kAuthConfigSwitchName)) { |
- auth_config_path_ = cmd_line->GetSwitchValuePath(kAuthConfigSwitchName); |
- } else { |
- auth_config_path_ = default_config_dir.Append(kDefaultAuthConfigFile); |
+ FilePath path = cmd_line->GetSwitchValuePath(kAuthConfigSwitchName); |
+ if (!config_.AddConfigPath(path)) { |
+ return false; |
+ } |
} |
+ host_config_path_ = default_config_dir.Append(kDefaultHostConfigFile); |
if (cmd_line->HasSwitch(kHostConfigSwitchName)) { |
host_config_path_ = cmd_line->GetSwitchValuePath(kHostConfigSwitchName); |
- } else { |
- host_config_path_ = default_config_dir.Append(kDefaultHostConfigFile); |
+ } |
+ if (!config_.AddConfigPath(host_config_path_)) { |
+ return false; |
} |
-#if defined(OS_LINUX) |
- VideoFrameCapturer::EnableXDamage(true); |
-#endif |
+ return true; |
} |
void ConfigUpdated() { |
@@ -249,34 +248,20 @@ class HostProcess |
base::Bind(&HostProcess::OnPolicyUpdate, base::Unretained(this))); |
} |
- // Read Host config from disk, returning true if successful. |
+ // Read host config, returning true if successful. |
bool LoadConfig() { |
- JsonHostConfig host_config(host_config_path_); |
- JsonHostConfig auth_config(auth_config_path_); |
- |
- FilePath failed_path; |
- if (!host_config.Read()) { |
- failed_path = host_config_path_; |
- } else if (!auth_config.Read()) { |
- failed_path = auth_config_path_; |
- } |
- if (!failed_path.empty()) { |
- LOG(ERROR) << "Failed to read configuration file " << failed_path.value(); |
- return false; |
- } |
- |
- if (!host_config.GetString(kHostIdConfigPath, &host_id_)) { |
+ if (!config_.GetString(kHostIdConfigPath, &host_id_)) { |
LOG(ERROR) << "host_id is not defined in the config."; |
return false; |
} |
- if (!key_pair_.Load(host_config)) { |
+ if (!key_pair_.Load(config_)) { |
return false; |
} |
std::string host_secret_hash_string; |
- if (!host_config.GetString(kHostSecretHashConfigPath, |
- &host_secret_hash_string)) { |
+ if (!config_.GetString(kHostSecretHashConfigPath, |
+ &host_secret_hash_string)) { |
host_secret_hash_string = "plain:"; |
} |
@@ -286,10 +271,10 @@ class HostProcess |
} |
// Use an XMPP connection to the Talk network for session signalling. |
- if (!auth_config.GetString(kXmppLoginConfigPath, &xmpp_login_) || |
- !(auth_config.GetString(kXmppAuthTokenConfigPath, &xmpp_auth_token_) || |
- auth_config.GetString(kOAuthRefreshTokenConfigPath, |
- &oauth_refresh_token_))) { |
+ if (!config_.GetString(kXmppLoginConfigPath, &xmpp_login_) || |
+ !(config_.GetString(kXmppAuthTokenConfigPath, &xmpp_auth_token_) || |
+ config_.GetString(kOAuthRefreshTokenConfigPath, |
+ &oauth_refresh_token_))) { |
LOG(ERROR) << "XMPP credentials are not defined in the config."; |
return false; |
} |
@@ -298,14 +283,14 @@ class HostProcess |
// depending on whether this is an official build or not. |
// If the client-Id type to use is not specified we default based on |
// the build type. |
- auth_config.GetBoolean(kOAuthUseOfficialClientIdConfigPath, |
- &oauth_use_official_client_id_); |
+ config_.GetBoolean(kOAuthUseOfficialClientIdConfigPath, |
+ &oauth_use_official_client_id_); |
if (!oauth_refresh_token_.empty()) { |
xmpp_auth_token_ = ""; // This will be set to the access token later. |
xmpp_auth_service_ = "oauth2"; |
- } else if (!auth_config.GetString(kXmppAuthServiceConfigPath, |
- &xmpp_auth_service_)) { |
+ } else if (!config_.GetString(kXmppAuthServiceConfigPath, |
+ &xmpp_auth_service_)) { |
// For the me2me host, we default to ClientLogin token for chromiumsync |
// because earlier versions of the host had no HTTP stack with which to |
// request an OAuth2 access token. |
@@ -501,8 +486,8 @@ class HostProcess |
scoped_ptr<ChromotingHostContext> context_; |
scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; |
- FilePath auth_config_path_; |
FilePath host_config_path_; |
+ CompositeHostConfig config_; |
std::string host_id_; |
HostKeyPair key_pair_; |
@@ -579,8 +564,14 @@ int main(int argc, char** argv) { |
// single-threaded. |
net::EnableSSLServerSockets(); |
+#if defined(OS_LINUX) |
+ remoting::VideoFrameCapturer::EnableXDamage(true); |
+#endif |
+ |
remoting::HostProcess me2me_host; |
- me2me_host.InitWithCommandLine(cmd_line); |
+ if (!me2me_host.InitWithCommandLine(cmd_line)) { |
+ return remoting::kInvalidHostConfigurationExitCode; |
+ } |
return me2me_host.Run(); |
} |