From 764937e03423fa9420e0f7730a666fb90b58cbfa Mon Sep 17 00:00:00 2001 From: Adrian Heine Date: Thu, 11 May 2017 09:39:19 +0200 Subject: [PATCH] Update --- src/symbols/systemd/node_js_user_service.rs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/symbols/systemd/node_js_user_service.rs b/src/symbols/systemd/node_js_user_service.rs index 284009d..ce6d060 100644 --- a/src/symbols/systemd/node_js_user_service.rs +++ b/src/symbols/systemd/node_js_user_service.rs @@ -8,7 +8,7 @@ use std::thread::sleep; use std::time::Duration; use std::ops::Deref; -use command_runner::CommandRunner; +use command_runner::{CommandRunner, SetuidCommandRunner}; use resources::Resource; use symbols::Symbol; use symbols::file::File as FileSymbol; @@ -52,15 +52,15 @@ impl fmt::Display for NodeJsSystemdUserServiceError { } } -pub struct NodeJsSystemdUserService<'a, C> where C: Deref { +pub struct NodeJsSystemdUserService<'a, C, R> where C: Deref, R: CommandRunner { service_name: &'a str, user_name: &'a str, - command_runner: &'a CommandRunner, + command_runner: R, file: FileSymbol } -impl<'a> NodeJsSystemdUserService<'a, String> { - pub fn new(home: &'a str, user_name: &'a str, name: &'a str, path: &'a str, command_runner: &'a CommandRunner) -> Self { +impl<'a, R> NodeJsSystemdUserService<'a, String, SetuidCommandRunner<'a, R>> where R: CommandRunner { + pub fn new(home: &'a str, user_name: &'a str, name: &'a str, path: &'a str, command_runner: &'a R) -> Self { let file_path = format!("{}/.config/systemd/user/{}.service", home.trim_right(), name); let content = format!("[Service] @@ -81,13 +81,13 @@ WantedBy=default.target NodeJsSystemdUserService { service_name: name, user_name: user_name, - command_runner: command_runner, + command_runner: SetuidCommandRunner::new(user_name, command_runner), file: FileSymbol::new(file_path, content) } } } -impl<'a, C> NodeJsSystemdUserService<'a, C> where C: Deref { +impl<'a, C, R> NodeJsSystemdUserService<'a, C, R> where C: Deref, R: CommandRunner { fn check_if_service(&self) -> Result> { loop { // Check if service is registered @@ -131,7 +131,7 @@ fn wait_for_metadata(file_name: &str) -> Result> { Ok(result) } -impl<'a, C> Symbol for NodeJsSystemdUserService<'a, C> where C: Deref { +impl<'a, C, R> Symbol for NodeJsSystemdUserService<'a, C, R> where C: Deref, R: CommandRunner { fn target_reached(&self) -> Result> { if !(try!(self.file.target_reached())) { return Ok(false); @@ -163,7 +163,7 @@ impl<'a, C> Symbol for NodeJsSystemdUserService<'a, C> where C: Deref fmt::Display for NodeJsSystemdUserService<'a, C> where C: Deref { +impl<'a, C, R> fmt::Display for NodeJsSystemdUserService<'a, C, R> where C: Deref, R: CommandRunner { fn fmt(&self, f: &mut fmt::Formatter) -> Result<(),fmt::Error>{ write!(f, "Systemd Node.js user service unit for {}", self.service_name) }