Some updates
This commit is contained in:
parent
412af95149
commit
42d97d6eea
4 changed files with 20 additions and 9 deletions
|
|
@ -82,7 +82,7 @@ impl<'a> Drop for TempSetEnv<'a> {
|
||||||
|
|
||||||
impl<'a, C> CommandRunner for SetuidCommandRunner<'a, C> where C: 'a + CommandRunner {
|
impl<'a, C> CommandRunner for SetuidCommandRunner<'a, C> where C: 'a + CommandRunner {
|
||||||
fn run_with_args(&self, program: &str, args: &[&str]) -> IoResult<Output> {
|
fn run_with_args(&self, program: &str, args: &[&str]) -> IoResult<Output> {
|
||||||
let uid = get_user_by_name(self.user_name).unwrap().uid();
|
let uid = get_user_by_name(self.user_name).expect("User does not exist").uid();
|
||||||
let set_home = TempSetEnv::new("HOME", format!("/home/{}", self.user_name));
|
let set_home = TempSetEnv::new("HOME", format!("/home/{}", self.user_name));
|
||||||
let set_dbus = TempSetEnv::new("XDG_RUNTIME_DIR", format!("/run/user/{}", uid));
|
let set_dbus = TempSetEnv::new("XDG_RUNTIME_DIR", format!("/run/user/{}", uid));
|
||||||
println!("{} {:?}", program, args);
|
println!("{} {:?}", program, args);
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ use std::fmt;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
use command_runner::CommandRunner;
|
use command_runner::CommandRunner;
|
||||||
|
use resources::Resource;
|
||||||
use symbols::Symbol;
|
use symbols::Symbol;
|
||||||
|
|
||||||
pub struct AcmeAccountKey<'a> {
|
pub struct AcmeAccountKey<'a> {
|
||||||
|
|
@ -46,6 +47,10 @@ impl<'a> Symbol for AcmeAccountKey<'a> {
|
||||||
fn execute(&self) -> Result<(), Box<Error>> {
|
fn execute(&self) -> Result<(), Box<Error>> {
|
||||||
self.command_runner.run_successfully("openssl", &["genrsa", "-out", self.get_path(), &self.get_bytes().to_string()])
|
self.command_runner.run_successfully("openssl", &["genrsa", "-out", self.get_path(), &self.get_bytes().to_string()])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_prerequisites(&self) -> Vec<Resource> {
|
||||||
|
vec![ Resource::new("dir", Path::new(self.get_path()).parent().unwrap().to_string_lossy() ) ]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ impl<'a, S> DatabaseDump<'a, S> where S: Storage {
|
||||||
|
|
||||||
impl<'a, S> fmt::Display for DatabaseDump<'a, S> where S: Storage {
|
impl<'a, S> fmt::Display for DatabaseDump<'a, S> where S: Storage {
|
||||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
write!(f, "MariaDB Database {}", self.db_name)
|
write!(f, "Dump MariaDB Database {}", self.db_name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -38,6 +38,7 @@ impl<'a, S> Symbol for DatabaseDump<'a, S> where S: Storage {
|
||||||
fn target_reached(&self) -> Result<bool, Box<Error>> {
|
fn target_reached(&self) -> Result<bool, Box<Error>> {
|
||||||
let dump_date = try!(self.storage.recent_date());
|
let dump_date = try!(self.storage.recent_date());
|
||||||
let modified_date = try!(self.run_sql(&format!("select UNIX_TIMESTAMP(MAX(UPDATE_TIME)) from information_schema.tables WHERE table_schema = '{}'", self.db_name)));
|
let modified_date = try!(self.run_sql(&format!("select UNIX_TIMESTAMP(MAX(UPDATE_TIME)) from information_schema.tables WHERE table_schema = '{}'", self.db_name)));
|
||||||
|
if modified_date.trim_right() == "NULL" { return Ok(false); }
|
||||||
Ok(try!(u64::from_str(modified_date.trim_right())) <= dump_date)
|
Ok(try!(u64::from_str(modified_date.trim_right())) <= dump_date)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,20 +63,23 @@ impl<'a, R> NodeJsSystemdUserService<'a, String, SetuidCommandRunner<'a, R>> whe
|
||||||
pub fn new(home: &'a str, user_name: &'a str, name: &'a str, path: &'a str, command_runner: &'a R) -> Self {
|
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 file_path = format!("{}/.config/systemd/user/{}.service", home.trim_right(), name);
|
||||||
|
|
||||||
|
let port = format!("/var/tmp/{}-{}.socket", user_name, name);
|
||||||
let content = format!("[Service]
|
let content = format!("[Service]
|
||||||
ExecStartPre=/bin/rm -f /var/tmp/{1}-{2}.socket
|
|
||||||
# This only works if the path is a directory
|
|
||||||
WorkingDirectory={0}
|
|
||||||
ExecStart=/usr/bin/nodejs {0}
|
|
||||||
Restart=always
|
|
||||||
Environment=NODE_ENV=production
|
Environment=NODE_ENV=production
|
||||||
Environment=PORT=/var/tmp/{1}-{2}.socket
|
Environment=PORT={1}
|
||||||
|
ExecStartPre=/bin/rm -f {1}
|
||||||
|
ExecStart=/usr/bin/nodejs {0}
|
||||||
|
ExecStartPost=/bin/sh -c 'sleep 1 && chmod 666 {1}'
|
||||||
|
|
||||||
|
# FIXME: This only works if the nodejs path is a directory
|
||||||
|
WorkingDirectory={0}
|
||||||
|
Restart=always
|
||||||
#RuntimeDirectory=service
|
#RuntimeDirectory=service
|
||||||
#RuntimeDirectoryMode=766
|
#RuntimeDirectoryMode=766
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=default.target
|
WantedBy=default.target
|
||||||
", path, user_name, name);
|
", path, port);
|
||||||
|
|
||||||
NodeJsSystemdUserService {
|
NodeJsSystemdUserService {
|
||||||
service_name: name,
|
service_name: name,
|
||||||
|
|
@ -167,9 +170,11 @@ impl<'a, C, R> Symbol for NodeJsSystemdUserService<'a, C, R> where C: Deref<Targ
|
||||||
|
|
||||||
let file_name = format!("/var/tmp/{}-{}.socket", self.user_name, self.service_name);
|
let file_name = format!("/var/tmp/{}-{}.socket", self.user_name, self.service_name);
|
||||||
let metadata = try!(wait_for_metadata(&file_name));
|
let metadata = try!(wait_for_metadata(&file_name));
|
||||||
|
/*
|
||||||
let mut perms = metadata.permissions();
|
let mut perms = metadata.permissions();
|
||||||
perms.set_mode(0o666);
|
perms.set_mode(0o666);
|
||||||
try!(fs::set_permissions(file_name, perms));
|
try!(fs::set_permissions(file_name, perms));
|
||||||
|
*/
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue