use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug)] pub struct NssUser { pub name: String, pub gid: u32, pub gecos: String, pub homedir: String, pub shell: String, } #[derive(Serialize, Deserialize, Debug)] pub struct NssGroup { pub name: String, pub gid: u32, pub members: Vec, } #[derive(Serialize, Deserialize, Debug)] pub enum ClientRequest { SshKey(String), NssAccounts, NssAccountByUid(u32), NssAccountByName(String), NssGroups, NssGroupByGid(u32), NssGroupByName(String), PamAuthenticate(String, String), PamAccountAllowed(String), PamAccountBeginSession(String), InvalidateCache, ClearCache, Status, } #[derive(Serialize, Deserialize, Debug)] pub enum ClientResponse { SshKeys(Vec), NssAccounts(Vec), NssAccount(Option), NssGroups(Vec), NssGroup(Option), PamStatus(Option), Ok, Error, } #[derive(Serialize, Deserialize, Debug, Clone)] pub struct HomeDirectoryInfo { pub gid: u32, pub name: String, pub aliases: Vec, } #[derive(Serialize, Deserialize, Debug, Clone)] pub enum TaskRequest { HomeDirectory(HomeDirectoryInfo), } #[derive(Serialize, Deserialize, Debug)] pub enum TaskResponse { Success, Error(String), }