Pamified killer?
Pavel Kankovsky
peak na argo.troja.mff.cuni.cz
Čtvrtek Říjen 26 11:07:43 CEST 2000
On Thu, 26 Oct 2000, Petr Tomasek wrote:
> No jo, prekecl jsem se. Samozrejme jsem mel na mysli
> programovani pamifikovanych programu...
Na tom neni nic sloziteho. Muze to vypadat treba nejak takto:
/* konverzacni funkce, ktera nekonverzuje */
int
conv(int n, const struct pam_message **msgm,
struct pam_response **response, void *appdata_ptr)
{
int k;
if (n <= 0) return PAM_CONV_ERR;
for (k = 0; k < n; ++k) {
switch (msgm[k]->msg_style)
case PAM_ERROR_MSG: case PAM_TEXT_INFO: case PAM_BINARY_MSG:
continue;
default:
return PAM_CONV_ERR;
}
}
*response = (struct pam_response *) calloc(n, sizeof(pam_response));
if (!*response) return PAM_BUF_ERR;
return PAM_SUCCESS;
}
/* vlastni test, vraci PAM_SUCCESS, kdyz je vsechno ok */
int
test_user(const char *user, const char *tty,
const char *rhost, const char *ruser)
{
pam_handle_t *pamh = NULL;
int r;
r = pam_start(service, user, &conv, &pamh);
if (r == PAM_SUCCESS && tty)
r = pam_set_item(pamh, PAM_TTY, tty);
if (r == PAM_SUCCESS && rhost)
r = pam_set_item(pamh, PAM_RHOST, rhost);
if (r == PAM_SUCCESS && ruser)
r = pam_set_item(pamh, PAM_RUSER, ruser);
if (r == PAM_SUCCESS)
r = pam_acct_mgmt(pamh, 0);
pam_end(pamh, result);
return r;
}
--Pavel Kankovsky aka Peak [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."
Další informace o konferenci Linux