mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
Add nss getpwuid to the himmelblau daemon
Signed-off-by: David Mulder <dmulder@samba.org> Reviewed-by: Alexander Bokovoy <ab@samba.org>
This commit is contained in:
parent
94e4d005b5
commit
71b96f78df
@ -214,6 +214,7 @@ pub(crate) async fn handle_client(
|
||||
Request::NssAccountByName(account_id) => {
|
||||
resolver.getpwnam(&account_id).await?
|
||||
}
|
||||
Request::NssAccountByUid(uid) => resolver.getpwuid(uid).await?,
|
||||
_ => todo!(),
|
||||
};
|
||||
reqs.send(resp).await?;
|
||||
@ -227,4 +228,5 @@ pub(crate) async fn handle_client(
|
||||
|
||||
mod himmelblaud_getpwent;
|
||||
mod himmelblaud_getpwnam;
|
||||
mod himmelblaud_getpwuid;
|
||||
mod himmelblaud_pam_auth;
|
||||
|
45
himmelblaud/src/himmelblaud/himmelblaud_getpwuid.rs
Normal file
45
himmelblaud/src/himmelblaud/himmelblaud_getpwuid.rs
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
Unix SMB/CIFS implementation.
|
||||
|
||||
Himmelblau daemon implementation for nss getpwuid
|
||||
|
||||
Copyright (C) David Mulder 2024
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
use crate::himmelblaud::Resolver;
|
||||
use libc::uid_t;
|
||||
use ntstatus_gen::NTSTATUS;
|
||||
use sock::Response;
|
||||
|
||||
impl Resolver {
|
||||
pub(crate) async fn getpwuid(
|
||||
&mut self,
|
||||
uid: uid_t,
|
||||
) -> Result<Response, Box<NTSTATUS>> {
|
||||
if let Some(upn) = self.uid_cache.fetch(uid) {
|
||||
if let Some(entry) = self.user_cache.fetch(&upn) {
|
||||
Ok(Response::NssAccount(Some(
|
||||
self.create_passwd_from_upn(&entry.upn, &entry.name)?,
|
||||
)))
|
||||
} else {
|
||||
Ok(Response::NssAccount(Some(
|
||||
self.create_passwd_from_upn(&upn, "")?,
|
||||
)))
|
||||
}
|
||||
} else {
|
||||
Ok(Response::NssAccount(None))
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user