Compare commits

...

3 Commits

Author SHA1 Message Date
Nadja Reitzenstein
ed07a55bb8 Also update Cargo.lock to new version 2022-02-07 17:49:50 +01:00
Nadja Reitzenstein
650fb706a7 update schema 2022-02-07 17:19:41 +01:00
Nadja Reitzenstein
04c9aa4d08 Disclose machines that are used by yourself 2022-02-04 14:20:15 +01:00
4 changed files with 31 additions and 15 deletions

2
Cargo.lock generated
View File

@ -504,7 +504,7 @@ dependencies = [
[[package]]
name = "diflouroborane"
version = "0.2.1"
version = "0.2.3"
dependencies = [
"async-channel",
"async-trait",

View File

@ -1,6 +1,6 @@
[package]
name = "diflouroborane"
version = "0.2.1"
version = "0.2.3"
authors = [ "dequbed <me@dequbed.space>"
, "Kai Jan Kriegel <kai@kjkriegel.de>"
, "Joseph Langosch <thejoklla@gmail.com>"

2
schema

@ -1 +1 @@
Subproject commit c855646a90958ae575d58be074d187acb9f8f4fa
Subproject commit 18ed9c2ae6a221f57d19e255165c7ebc4508e9af

View File

@ -52,16 +52,6 @@ impl machines::Server for Machines {
let session = self.session.borrow();
if session.deref().is_some() {
let v: Vec<(String, crate::machine::Machine)> = self.network.machines.iter()
.filter(|(_name, machine)| {
let required_disclose = &machine.desc.privs.disclose;
for perm_rule in session.as_ref().unwrap().perms.iter() {
if perm_rule.match_perm(required_disclose) {
return true;
}
}
false
})
.map(|(n,m)| (n.clone(), m.clone()))
.collect();
@ -70,8 +60,34 @@ impl machines::Server for Machines {
let user = &session.as_ref().unwrap().authzid;
let permissions = &session.as_ref().unwrap().perms;
let mut machines = results.get().init_machine_list(v.len() as u32);
for (i, (id, machine)) in v.into_iter().enumerate() {
let mut filtered_v = Vec::with_capacity(v.len());
for (id, machine) in v.into_iter() {
match machine.get_status().await {
// Always show a machine if they're in use by myself
Status::InUse(ref bywho) =>
if bywho.is_some() && bywho.as_ref().filter(|bywho| *bywho == user).is_some()
{
filtered_v.push((id, machine));
}
Status::Reserved(ref bywho) => if bywho == user {
filtered_v.push((id, machine));
}
// The rest depends on the actual priviledges below
_ => {
let required_disclose = &machine.desc.privs.disclose;
if session.as_ref().unwrap().perms.iter()
.any(|rule| rule.match_perm(required_disclose))
{
filtered_v.push((id, machine));
}
}
}
}
let mut machines = results.get().init_machine_list(filtered_v.len() as u32);
for (i, (id, machine)) in filtered_v.into_iter().enumerate() {
let mut builder = machines.reborrow().get(i as u32);
fill_machine_builder(
&mut builder,