xref: /DragonOS/user/apps/user-manage/src/check/info.rs (revision 03746da3d9f3ea616cecdb6e581414002075f866)
1*03746da3SJomo #[derive(Debug, Default, Clone)]
2*03746da3SJomo /// useradd的信息
3*03746da3SJomo pub struct UAddInfo {
4*03746da3SJomo     /// 用户名
5*03746da3SJomo     pub username: String,
6*03746da3SJomo     pub uid: String,
7*03746da3SJomo     pub gid: String,
8*03746da3SJomo     /// 所在组的组名
9*03746da3SJomo     pub group: String,
10*03746da3SJomo     /// 用户描述信息
11*03746da3SJomo     pub comment: String,
12*03746da3SJomo     /// 主目录
13*03746da3SJomo     pub home_dir: String,
14*03746da3SJomo     /// 终端程序名
15*03746da3SJomo     pub shell: String,
16*03746da3SJomo }
17*03746da3SJomo 
18*03746da3SJomo impl From<UAddInfo> for String {
from(info: UAddInfo) -> Self19*03746da3SJomo     fn from(info: UAddInfo) -> Self {
20*03746da3SJomo         format!(
21*03746da3SJomo             "{}::{}:{}:{}:{}:{}\n",
22*03746da3SJomo             info.username, info.uid, info.gid, info.comment, info.home_dir, info.shell
23*03746da3SJomo         )
24*03746da3SJomo     }
25*03746da3SJomo }
26*03746da3SJomo 
27*03746da3SJomo #[derive(Debug, Default, Clone)]
28*03746da3SJomo /// userdel的信息
29*03746da3SJomo pub struct UDelInfo {
30*03746da3SJomo     pub username: String,
31*03746da3SJomo     pub home: Option<String>,
32*03746da3SJomo }
33*03746da3SJomo 
34*03746da3SJomo #[derive(Debug, Default, Clone)]
35*03746da3SJomo /// usermod的信息
36*03746da3SJomo pub struct UModInfo {
37*03746da3SJomo     pub username: String,
38*03746da3SJomo     pub groups: Option<Vec<String>>,
39*03746da3SJomo     pub new_comment: Option<String>,
40*03746da3SJomo     pub new_home: Option<String>,
41*03746da3SJomo     pub new_gid: Option<String>,
42*03746da3SJomo     pub new_group: Option<String>,
43*03746da3SJomo     pub new_name: Option<String>,
44*03746da3SJomo     pub new_shell: Option<String>,
45*03746da3SJomo     pub new_uid: Option<String>,
46*03746da3SJomo }
47*03746da3SJomo 
48*03746da3SJomo #[derive(Debug, Default, Clone)]
49*03746da3SJomo /// passwd的信息
50*03746da3SJomo pub struct PasswdInfo {
51*03746da3SJomo     pub username: String,
52*03746da3SJomo     pub new_password: String,
53*03746da3SJomo }
54*03746da3SJomo 
55*03746da3SJomo #[derive(Debug, Default, Clone)]
56*03746da3SJomo /// groupadd的信息
57*03746da3SJomo pub struct GAddInfo {
58*03746da3SJomo     pub groupname: String,
59*03746da3SJomo     pub gid: String,
60*03746da3SJomo     pub passwd: Option<String>,
61*03746da3SJomo }
62*03746da3SJomo 
63*03746da3SJomo impl GAddInfo {
to_string_group(&self) -> String64*03746da3SJomo     pub fn to_string_group(&self) -> String {
65*03746da3SJomo         let mut passwd = String::from("");
66*03746da3SJomo         if self.passwd.is_some() {
67*03746da3SJomo             passwd = "x".to_string();
68*03746da3SJomo         }
69*03746da3SJomo         format!("{}:{}:{}:\n", self.groupname, passwd, self.gid)
70*03746da3SJomo     }
71*03746da3SJomo 
to_string_gshadow(&self) -> String72*03746da3SJomo     pub fn to_string_gshadow(&self) -> String {
73*03746da3SJomo         let mut passwd = String::from("!");
74*03746da3SJomo         if let Some(gpasswd) = &self.passwd {
75*03746da3SJomo             passwd = gpasswd.clone();
76*03746da3SJomo         }
77*03746da3SJomo 
78*03746da3SJomo         format!("{}:{}::\n", self.groupname, passwd)
79*03746da3SJomo     }
80*03746da3SJomo }
81*03746da3SJomo 
82*03746da3SJomo #[derive(Debug, Default, Clone)]
83*03746da3SJomo /// groupdel的信息
84*03746da3SJomo pub struct GDelInfo {
85*03746da3SJomo     pub groupname: String,
86*03746da3SJomo }
87*03746da3SJomo 
88*03746da3SJomo #[derive(Debug, Default, Clone)]
89*03746da3SJomo /// groupmod的信息
90*03746da3SJomo pub struct GModInfo {
91*03746da3SJomo     pub groupname: String,
92*03746da3SJomo     pub gid: String,
93*03746da3SJomo     pub new_groupname: Option<String>,
94*03746da3SJomo     pub new_gid: Option<String>,
95*03746da3SJomo }
96