add execution of the check script when it is, and some code optimisations.

This commit is contained in:
primardj 2024-04-14 20:41:30 +01:00
parent cb8768b6f5
commit 486820f096
3 changed files with 44 additions and 7 deletions

View file

@ -31,7 +31,7 @@ pub fn sent_signal( svwait_var: i32, verbose: i8, command: &str, mut sv: status_
return 0
}
if time_wait >= svwait_var {
println!("fail: {}: timeout", sv.get_name());
println!("timeout: {}", sv.get_status_string());
return 1
}
@ -60,7 +60,7 @@ pub fn sent_signal( svwait_var: i32, verbose: i8, command: &str, mut sv: status_
return 0
}
if time_wait >= svwait_var {
println!("fail: {}: timeout", sv.get_name());
println!("timeout: {}", sv.get_status_string());
return 1
}
@ -75,11 +75,8 @@ pub fn sent_signal( svwait_var: i32, verbose: i8, command: &str, mut sv: status_
}
}
// TODO
// sent the proper signal to supervise/control
//
// if verbose = 1, wait for the service to reach the proper state or timeout.
println!("Error, command not implemented.");
return 1;
}

View file

@ -8,6 +8,7 @@ use std::io::prelude::*;
use std::time::SystemTime;
#[derive(Debug)]
pub struct StatusObj {
svname: String, // Service name
@ -230,6 +231,13 @@ impl StatusObj {
}
pub fn is_up(&mut self) -> bool {
let check = fs::File::open("check");
match check {
Ok(file) => {
return misc::test_check(file, self.run_finish)
},
Err(..) => {},
};
return self.run_finish;
}

View file

@ -3,6 +3,10 @@ use tokio::net::unix::pipe;
use tokio::runtime::Runtime;
use std::io::ErrorKind;
use std::fs::File;
use std::process::Command;
use std::os::unix::fs::PermissionsExt;
pub fn make_pause_run(pr_int: u8) -> bool {
if pr_int == 0 {
return false // run
@ -131,3 +135,31 @@ pub fn sent_signal(signal: &[u8]) -> bool {
},
};
}
pub fn test_check(file: File, run_finish: bool) -> bool {
// Check the permission, and return the result of check
let meta = file.metadata();
match meta {
Ok(m) => {
let permissions = m.permissions();
//println!("permissions: {:o}", permissions.mode() & 0o100700);
if permissions.mode() & 0o100700 == 0o100700 {
// Execute script
let mut command = Command::new("sh");
let status = command.arg("check").status();
match status {
Ok(s) => {
if s.success() {
return true
} else {
return false
}
},
Err(..) => {}
};
}
},
Err(..) => {},
};
return run_finish;
}