| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/setup/daemon_controller_delegate_linux.h" | 5 #include "remoting/host/setup/daemon_controller_delegate_linux.h" |
| 6 | 6 |
| 7 #include <unistd.h> | 7 #include <unistd.h> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 78 // PATH, don't do it as root. | 78 // PATH, don't do it as root. |
| 79 if (getuid() == 0) { | 79 if (getuid() == 0) { |
| 80 LOG(ERROR) << "Refusing to run script as root."; | 80 LOG(ERROR) << "Refusing to run script as root."; |
| 81 return false; | 81 return false; |
| 82 } | 82 } |
| 83 base::FilePath script_path; | 83 base::FilePath script_path; |
| 84 if (!GetScriptPath(&script_path)) { | 84 if (!GetScriptPath(&script_path)) { |
| 85 LOG(ERROR) << "GetScriptPath() failed."; | 85 LOG(ERROR) << "GetScriptPath() failed."; |
| 86 return false; | 86 return false; |
| 87 } | 87 } |
| 88 CommandLine command_line(script_path); | 88 base::CommandLine command_line(script_path); |
| 89 for (unsigned int i = 0; i < args.size(); ++i) { | 89 for (unsigned int i = 0; i < args.size(); ++i) { |
| 90 command_line.AppendArg(args[i]); | 90 command_line.AppendArg(args[i]); |
| 91 } | 91 } |
| 92 base::ProcessHandle process_handle; | 92 base::ProcessHandle process_handle; |
| 93 | 93 |
| 94 // Redirect the child's stdout to the parent's stderr. In the case where this | 94 // Redirect the child's stdout to the parent's stderr. In the case where this |
| 95 // parent process is a Native Messaging host, its stdout is used to send | 95 // parent process is a Native Messaging host, its stdout is used to send |
| 96 // messages to the web-app. | 96 // messages to the web-app. |
| 97 base::FileHandleMappingVector fds_to_remap; | 97 base::FileHandleMappingVector fds_to_remap; |
| 98 fds_to_remap.push_back(std::pair<int, int>(STDERR_FILENO, STDOUT_FILENO)); | 98 fds_to_remap.push_back(std::pair<int, int>(STDERR_FILENO, STDOUT_FILENO)); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 125 } | 125 } |
| 126 | 126 |
| 127 DaemonControllerDelegateLinux::~DaemonControllerDelegateLinux() { | 127 DaemonControllerDelegateLinux::~DaemonControllerDelegateLinux() { |
| 128 } | 128 } |
| 129 | 129 |
| 130 DaemonController::State DaemonControllerDelegateLinux::GetState() { | 130 DaemonController::State DaemonControllerDelegateLinux::GetState() { |
| 131 base::FilePath script_path; | 131 base::FilePath script_path; |
| 132 if (!GetScriptPath(&script_path)) { | 132 if (!GetScriptPath(&script_path)) { |
| 133 return DaemonController::STATE_NOT_IMPLEMENTED; | 133 return DaemonController::STATE_NOT_IMPLEMENTED; |
| 134 } | 134 } |
| 135 CommandLine command_line(script_path); | 135 base::CommandLine command_line(script_path); |
| 136 command_line.AppendArg("--get-status"); | 136 command_line.AppendArg("--get-status"); |
| 137 | 137 |
| 138 std::string status; | 138 std::string status; |
| 139 int exit_code = 0; | 139 int exit_code = 0; |
| 140 bool result = | 140 bool result = |
| 141 base::GetAppOutputWithExitCode(command_line, &status, &exit_code); | 141 base::GetAppOutputWithExitCode(command_line, &status, &exit_code); |
| 142 if (!result) { | 142 if (!result) { |
| 143 // TODO(jamiewalch): When we have a good story for installing, return | 143 // TODO(jamiewalch): When we have a good story for installing, return |
| 144 // NOT_INSTALLED rather than NOT_IMPLEMENTED (the former suppresses | 144 // NOT_INSTALLED rather than NOT_IMPLEMENTED (the former suppresses |
| 145 // the relevant UI in the web-app). | 145 // the relevant UI in the web-app). |
| (...skipping 29 matching lines...) Expand all Loading... |
| 175 JsonHostConfig config(GetConfigPath()); | 175 JsonHostConfig config(GetConfigPath()); |
| 176 if (config.Read()) { | 176 if (config.Read()) { |
| 177 std::string value; | 177 std::string value; |
| 178 if (config.GetString(kHostIdConfigPath, &value)) { | 178 if (config.GetString(kHostIdConfigPath, &value)) { |
| 179 result->SetString(kHostIdConfigPath, value); | 179 result->SetString(kHostIdConfigPath, value); |
| 180 } | 180 } |
| 181 if (config.GetString(kXmppLoginConfigPath, &value)) { | 181 if (config.GetString(kXmppLoginConfigPath, &value)) { |
| 182 result->SetString(kXmppLoginConfigPath, value); | 182 result->SetString(kXmppLoginConfigPath, value); |
| 183 } | 183 } |
| 184 } else { | 184 } else { |
| 185 result.reset(); // Return NULL in case of error. | 185 result.reset(); // Return NULL in case of error. |
| 186 } | 186 } |
| 187 } | 187 } |
| 188 | 188 |
| 189 return result.Pass(); | 189 return result.Pass(); |
| 190 } | 190 } |
| 191 | 191 |
| 192 void DaemonControllerDelegateLinux::InstallHost( | 192 void DaemonControllerDelegateLinux::InstallHost( |
| 193 const DaemonController::CompletionCallback& done) { | 193 const DaemonController::CompletionCallback& done) { |
| 194 NOTREACHED(); | 194 NOTREACHED(); |
| 195 } | 195 } |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 | 275 |
| 276 void DaemonControllerDelegateLinux::SetWindow(void* window_handle) { | 276 void DaemonControllerDelegateLinux::SetWindow(void* window_handle) { |
| 277 // noop | 277 // noop |
| 278 } | 278 } |
| 279 | 279 |
| 280 std::string DaemonControllerDelegateLinux::GetVersion() { | 280 std::string DaemonControllerDelegateLinux::GetVersion() { |
| 281 base::FilePath script_path; | 281 base::FilePath script_path; |
| 282 if (!GetScriptPath(&script_path)) { | 282 if (!GetScriptPath(&script_path)) { |
| 283 return std::string(); | 283 return std::string(); |
| 284 } | 284 } |
| 285 CommandLine command_line(script_path); | 285 base::CommandLine command_line(script_path); |
| 286 command_line.AppendArg("--host-version"); | 286 command_line.AppendArg("--host-version"); |
| 287 | 287 |
| 288 std::string version; | 288 std::string version; |
| 289 int exit_code = 0; | 289 int exit_code = 0; |
| 290 int result = | 290 int result = |
| 291 base::GetAppOutputWithExitCode(command_line, &version, &exit_code); | 291 base::GetAppOutputWithExitCode(command_line, &version, &exit_code); |
| 292 if (!result || exit_code != 0) { | 292 if (!result || exit_code != 0) { |
| 293 LOG(ERROR) << "Failed to run \"" << command_line.GetCommandLineString() | 293 LOG(ERROR) << "Failed to run \"" << command_line.GetCommandLineString() |
| 294 << "\". Exit code: " << exit_code; | 294 << "\". Exit code: " << exit_code; |
| 295 return std::string(); | 295 return std::string(); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 315 return consent; | 315 return consent; |
| 316 } | 316 } |
| 317 | 317 |
| 318 scoped_refptr<DaemonController> DaemonController::Create() { | 318 scoped_refptr<DaemonController> DaemonController::Create() { |
| 319 scoped_ptr<DaemonController::Delegate> delegate( | 319 scoped_ptr<DaemonController::Delegate> delegate( |
| 320 new DaemonControllerDelegateLinux()); | 320 new DaemonControllerDelegateLinux()); |
| 321 return new DaemonController(delegate.Pass()); | 321 return new DaemonController(delegate.Pass()); |
| 322 } | 322 } |
| 323 | 323 |
| 324 } // namespace remoting | 324 } // namespace remoting |
| OLD | NEW |