From 3bcf1fee827f8064dd646934ef83a3d3a662e517 Mon Sep 17 00:00:00 2001 From: Albert S Date: Sun, 11 Aug 2019 11:54:53 +0200 Subject: [PATCH] reformat with rustfmt --- rust/Cargo.lock | 2 + rust/src/main.rs | 107 +++++++++++++++++++++++++---------------------- 2 files changed, 60 insertions(+), 49 deletions(-) diff --git a/rust/Cargo.lock b/rust/Cargo.lock index d0cb3a4..c0f359e 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -1,3 +1,5 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. [[package]] name = "bitflags" version = "1.0.4" diff --git a/rust/src/main.rs b/rust/src/main.rs index caae5a3..ea66fc2 100644 --- a/rust/src/main.rs +++ b/rust/src/main.rs @@ -1,70 +1,74 @@ use std::env; -use std::io::BufReader; +use std::ffi::CString; use std::io::BufRead; +use std::io::BufReader; use std::io::Error; use std::io::ErrorKind; use std::io::Write; -use std::ffi::CString; -static PROFILEPATH : &'static str ="/etc/qsni.d/"; -static NET_CLS_DIR : &'static str="/sys/fs/cgroup/net_cls/"; +static PROFILEPATH: &'static str = "/etc/qsni.d/"; +static NET_CLS_DIR: &'static str = "/sys/fs/cgroup/net_cls/"; extern crate nix; - -fn ensure_outside_profile() -{ - let fp = std::fs::File::open("/proc/self/cgroup").expect("Error opening cgroups file of process"); +fn ensure_outside_profile() { + let fp = + std::fs::File::open("/proc/self/cgroup").expect("Error opening cgroups file of process"); let bf = BufReader::new(fp); for line in bf.lines() { let currentline = line.expect("Error while reading line"); - let splitted : Vec<&str> = currentline.split(':').collect(); + let splitted: Vec<&str> = currentline.split(':').collect(); if splitted.len() < 3 { panic!("Misformated line in cgroups file!"); - } - if splitted[1] == "net_cls" && splitted[2] != "/" { - panic!("already assigned to a net class, thus you can't use this binary to change that"); + } + if splitted[1] == "net_cls" && splitted[2] != "/" { + panic!( + "already assigned to a net class, thus you can't use this binary to change that" + ); } } } -fn init_profile(profilepath : &str) -{ - use nix::unistd::*; +fn init_profile(profilepath: &str) { use nix::sys::wait::*; - match fork() - { - Ok(ForkResult::Parent { child, .. }) => { - let waitresult = waitpid(child, Some(WaitPidFlag::empty())).expect("waitpid failed"); - match waitresult - { - WaitStatus::Exited(pid, code) => - { - if code != 0 - { - panic!("profile setup script failed"); - } - }, - _ => { }, - } + use nix::unistd::*; + match fork() { + Ok(ForkResult::Parent { child, .. }) => { + let waitresult = waitpid(child, Some(WaitPidFlag::empty())).expect("waitpid failed"); + match waitresult { + WaitStatus::Exited(pid, code) => { + if code != 0 { + panic!("profile setup script failed"); + } + } + _ => {} } - Ok(ForkResult::Child) => { - unsafe { nix::libc::clearenv(); } - nix::unistd::execv(&CString::new(profilepath).unwrap(), &[CString::new(profilepath).unwrap()]).expect("Faileed execv");}, - Err(_) => println!("Fork failed"), } + Ok(ForkResult::Child) => { + unsafe { + nix::libc::clearenv(); + } + nix::unistd::execv( + &CString::new(profilepath).unwrap(), + &[CString::new(profilepath).unwrap()], + ) + .expect("Faileed execv"); + } + Err(_) => println!("Fork failed"), + } } -fn assign_to_profile(profilename : &str) -{ +fn assign_to_profile(profilename: &str) { let filename = NET_CLS_DIR.to_owned() + "/" + profilename + "/tasks"; - let mut file = std::fs::OpenOptions::new().write(true).append(true).open(filename).expect("Failed to open net class file for writing"); + let mut file = std::fs::OpenOptions::new() + .write(true) + .append(true) + .open(filename) + .expect("Failed to open net class file for writing"); let mypid = nix::unistd::getpid().to_string(); write!(file, "{}", mypid).expect("An error occured while writing the pid"); - } -fn main() -{ +fn main() { std::panic::set_hook(Box::new(|pi| { if let Some(s) = pi.payload().downcast_ref::() { eprintln!("{}", s); @@ -72,20 +76,20 @@ fn main() eprintln!("Details:"); eprintln!("{}", pi); })); - let args : Vec = std::env::args().collect(); + let args: Vec = std::env::args().collect(); if args.len() < 3 { println!("usage: qsni profile command [arguments...]"); std::process::exit(1); - } + } ensure_outside_profile(); - let profilename : &str = &args[1]; + let profilename: &str = &args[1]; let profilefilepath = PROFILEPATH.to_owned() + profilename; - if ! std::path::Path::new(&profilefilepath).exists(){ - eprintln!("The specified profile {} does not exist", profilename); - std::process::exit(1); - } + if !std::path::Path::new(&profilefilepath).exists() { + eprintln!("The specified profile {} does not exist", profilename); + std::process::exit(1); + } let currentuid = nix::unistd::getuid(); let currentgid = nix::unistd::getgid(); @@ -99,7 +103,12 @@ fn main() nix::unistd::setuid(currentuid).expect("setuid failed during drop"); let cmd = &args[2]; - let mut execargs : Vec = args.iter().skip(3).map(|s| { CString::new(s.as_str()).unwrap() }).collect(); + let mut execargs: Vec = args + .iter() + .skip(3) + .map(|s| CString::new(s.as_str()).unwrap()) + .collect(); execargs.insert(0, CString::new(cmd.as_str()).unwrap()); - nix::unistd::execvp(&CString::new(cmd.as_str()).unwrap(), &execargs).expect("execv failed launching your program"); + nix::unistd::execvp(&CString::new(cmd.as_str()).unwrap(), &execargs) + .expect("execv failed launching your program"); }