[refactor] turn permission checks into a function main.rs

main
Shinyzenith 2 years ago
parent 37d141d7c3
commit dbad34c65f
No known key found for this signature in database
GPG Key ID: 6DD485917B553B7B

@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2021" edition = "2021"
[dependencies] [dependencies]
async-std = "1.10.0" #async-std = "1.10.0"
evdev = "0.11.3" evdev = "0.11.3"
glob = "0.3.0" glob = "0.3.0"
log = "0.4.0" log = "0.4.0"

@ -29,14 +29,7 @@ pub fn main() {
env_logger::init(); env_logger::init();
log::trace!("Logger initialized."); log::trace!("Logger initialized.");
if unistd::Uid::current().is_root() { if permission_check() == false {
log::error!("Refusing to run swhkd as root.");
exit(1);
}
/* Check if invoking user is in input group */
if user_in_input_group() == false {
log::error!("Invoking user is NOT in input group.");
exit(1); exit(1);
} }
@ -74,7 +67,12 @@ pub fn main() {
} }
} }
pub fn user_in_input_group() -> bool { pub fn permission_check() -> bool {
if unistd::Uid::current().is_root() {
log::error!("Refusing to run swhkd as root.");
return false;
}
log::trace!("Checking if invoking user is in input group."); log::trace!("Checking if invoking user is in input group.");
let groups = unistd::getgroups(); let groups = unistd::getgroups();
for (_, groups) in groups.iter().enumerate() { for (_, groups) in groups.iter().enumerate() {
@ -86,6 +84,7 @@ pub fn user_in_input_group() -> bool {
} }
} }
} }
log::error!("Invoking user is NOT in input group.");
return false; return false;
} }

Loading…
Cancel
Save