ic_storage_module/
storage_show_command.rs1use intel_cache_lib::ic_types::IcPacket;
2use intel_cache_lib::lib_backend::show_entries;
3use intel_cache_lib::lib_backend::show_dirs;
4use intel_cache_lib::lib_backend::validate_dir;
5use intel_cache_lib::ic_types::ic_execute_mod::IcExecute;
6use intel_cache_lib::ic_types::IcConnection;
7use intel_cache_lib::ic_types::IcLoginDetails;
8
9pub struct StorageShow { }
10impl StorageShow {
11 #[no_mangle]
12 pub fn ss_new() -> StorageShow {
13 StorageShow {}
14 }
15
16 #[no_mangle]
17 pub fn ss_to_exe() -> Box<dyn IcExecute<Connection = IcConnection>> {
18 Box::new(StorageShow::ss_new())
19 }
20}
21impl IcExecute for StorageShow {
22 type Connection = IcConnection;
23
24 fn exec(&mut self,con: &mut Self::Connection, cmd: Option<Vec<String>>, _data: Option<Vec<u8>>,_cached: bool) -> IcPacket {
25 println!("{:?}",cmd.as_ref().unwrap_or(&vec!["NONE".to_string()]));
27 let mut retstr: String;
28 let c: Vec<String>;
29 if cmd != None {
30 c = cmd.unwrap();
31 } else { return IcPacket::new_denied(); }
32
33 if c.len() > 2 { if c[2] == (con.login).as_ref().unwrap_or(&IcLoginDetails { username: "NONE".to_string(), id: "NONE".to_string(), cookie: "NONE".to_string()}).cookie && c[2] != "NONE".to_string(){
35 let si = match c[1].parse::<i32>() {
36 Ok(v) => match validate_dir(&con.backend_con,v) {
37 Some(_iv) => {println!("VALIDATED");Some(v)},
38 None => return IcPacket::new(Some(format!("Error validating id {}",v).to_string()),None),
39 },
40 Err(_err) => return IcPacket::new(Some("Error parsing second argument..".to_string()),None)
41 };
42
43 if c.len() == 3 && si != None {
44 println!("clen3sinotnone");
45 retstr = show_dirs(&con.backend_con,Some(si.unwrap()),&(con.login).as_ref().unwrap().id,true);
46 retstr += &show_entries(&con.backend_con,Some(false),Some(true),Some(si.unwrap()),&(con.login).as_ref().unwrap().id,true);
47 } else if c.len() == 3 {
48 println!("clen3sinone");
49 retstr = show_dirs(&con.backend_con,None,&(con.login).as_ref().unwrap().id,true);
50 retstr += &show_entries(&con.backend_con,Some(false),Some(true),None,&(con.login).as_ref().unwrap().id,true);
51 } else { return IcPacket::new(Some("Error: argument count isn't 3.".to_string()),None) }
52 IcPacket::new(Some("OK!".to_string()),Some(retstr.as_bytes().to_vec()))
53 } else { IcPacket::new_denied() }
54 } else if c.len() == 2{ if c[1] == (con.login).as_ref().unwrap_or(&IcLoginDetails { username: "NONE".to_string(), id: "NONE".to_string(), cookie: "NONE".to_string()}).cookie && c[1] != "NONE".to_string(){
56 retstr = show_dirs(&con.backend_con,None,&(con.login).as_ref().unwrap().id,true);
57 retstr += &show_entries(&con.backend_con,Some(false),Some(true),None,&(con.login).as_ref().unwrap().id,true);
58 IcPacket::new(Some("OK!".to_string()),Some(retstr.as_bytes().to_vec()))
59 } else { IcPacket::new_denied() }
60 } else {
61 return IcPacket::new_denied();
62 }
63 }
64
65 fn login_required(&mut self) -> bool {
66 true
67 }
68}