Crate pamsm[][src]

PAM Service Module wrappers

Usage

For example, here is a time based authentication module :

#[macro_use] extern crate pamsm;
extern crate time;

use pamsm::{PamServiceModule, Pam, PamFlag, PamError};

struct PamTime;

impl PamServiceModule for PamTime {
    fn authenticate(pamh: Pam, _: PamFlag, args: Vec<String>) -> PamError {
        let hour = time::now().tm_hour;
        if hour != 4 {
            // Only allow authentication when it's 4 AM
            PamError::SUCCESS
        } else {
            PamError::AUTH_ERR
        }
    }
}

pam_module!(PamTime);

Macros

pam_module

Define entrypoints for the PAM module.

Structs

Pam

Opaque PAM handle, with additional native methods available via PamLibExt.

Enums

PamError
PamFlag

Traits

PamLibExt

Extension trait over Pam, usually provided by the libpam shared library.

PamServiceModule

Default service module implementation. All default functions return SERVICE_ERR. You can override functions depending on what kind of module you implement. See the respective pam_sm_* man pages for documentation.

Type Definitions

PamResult