Mercurial > crates > nonstick
comparison pam/src/module.rs @ 22:4263c1d83d5b
Refactor PamHooks into modules mod
| author | Anthony Nowell <anthony@algorithmia.com> |
|---|---|
| date | Tue, 26 Sep 2017 02:30:03 -0600 |
| parents | d654aa0655e5 |
| children | ec70822cbdef |
comparison
equal
deleted
inserted
replaced
| 21:aa7e8bd083ef | 22:4263c1d83d5b |
|---|---|
| 2 | 2 |
| 3 use libc::c_char; | 3 use libc::c_char; |
| 4 use std::{mem, ptr}; | 4 use std::{mem, ptr}; |
| 5 use std::ffi::{CStr, CString}; | 5 use std::ffi::{CStr, CString}; |
| 6 | 6 |
| 7 use constants::{PamResultCode, PamItemType}; | 7 use constants::{PamResultCode, PamItemType, PamFlag}; |
| 8 | 8 |
| 9 /// Opaque type, used as a pointer when making pam API calls. | 9 /// Opaque type, used as a pointer when making pam API calls. |
| 10 /// | 10 /// |
| 11 /// A module is invoked via an external function such as `pam_sm_authenticate`. | 11 /// A module is invoked via an external function such as `pam_sm_authenticate`. |
| 12 /// Such a call provides a pam handle pointer. The same pointer should be given | 12 /// Such a call provides a pam handle pointer. The same pointer should be given |
| 180 } else { | 180 } else { |
| 181 Err(res) | 181 Err(res) |
| 182 } | 182 } |
| 183 } | 183 } |
| 184 } | 184 } |
| 185 | |
| 186 /// Provides functions that are invoked by the entrypoints generated by the | |
| 187 /// [`pam_hooks!` macro](../macro.pam_hooks.html). | |
| 188 /// | |
| 189 /// All of hooks are ignored by PAM dispatch by default given the default return value of `PAM_IGNORE`. | |
| 190 /// Override any functions that you want to handle with your module. See `man pam(3)`. | |
| 191 #[allow(unused_variables)] | |
| 192 pub trait PamHooks { | |
| 193 /// This function performs the task of establishing whether the user is permitted to gain access at | |
| 194 /// this time. It should be understood that the user has previously been validated by an | |
| 195 /// authentication module. This function checks for other things. Such things might be: the time of | |
| 196 /// day or the date, the terminal line, remote hostname, etc. This function may also determine | |
| 197 /// things like the expiration on passwords, and respond that the user change it before continuing. | |
| 198 fn acct_mgmt(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode { | |
| 199 PamResultCode::PAM_IGNORE | |
| 200 } | |
| 201 | |
| 202 /// This function performs the task of authenticating the user. | |
| 203 fn sm_authenticate(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode { | |
| 204 PamResultCode::PAM_IGNORE | |
| 205 } | |
| 206 | |
| 207 /// This function is used to (re-)set the authentication token of the user. | |
| 208 /// | |
| 209 /// The PAM library calls this function twice in succession. The first time with | |
| 210 /// PAM_PRELIM_CHECK and then, if the module does not return PAM_TRY_AGAIN, subsequently with | |
| 211 /// PAM_UPDATE_AUTHTOK. It is only on the second call that the authorization token is | |
| 212 /// (possibly) changed. | |
| 213 fn sm_chauthtok(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode { | |
| 214 PamResultCode::PAM_IGNORE | |
| 215 } | |
| 216 | |
| 217 /// This function is called to terminate a session. | |
| 218 fn sm_close_session(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode { | |
| 219 PamResultCode::PAM_IGNORE | |
| 220 } | |
| 221 | |
| 222 /// This function is called to commence a session. | |
| 223 fn sm_open_session(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode { | |
| 224 PamResultCode::PAM_IGNORE | |
| 225 } | |
| 226 | |
| 227 /// This function performs the task of altering the credentials of the user with respect to the | |
| 228 /// corresponding authorization scheme. Generally, an authentication module may have access to more | |
| 229 /// information about a user than their authentication token. This function is used to make such | |
| 230 /// information available to the application. It should only be called after the user has been | |
| 231 /// authenticated but before a session has been established. | |
| 232 fn sm_setcred(pamh: &PamHandle, args: Vec<&CStr>, flags: PamFlag) -> PamResultCode { | |
| 233 PamResultCode::PAM_IGNORE | |
| 234 } | |
| 235 } |
