1 /*
2 * pam_warn module
3 *
4 * Written by Andrew Morgan <morgan@linux.kernel.org> 1996/3/11
5 */
6
7 #include "config.h"
8
9 #include <stdio.h>
10 #include <unistd.h>
11 #include <syslog.h>
12 #include <stdarg.h>
13
14 #include <security/pam_modules.h>
15 #include <security/pam_ext.h>
16
17 /* some syslogging */
18
19 #define OBTAIN(item, value, default_value) do { \
20 (void) pam_get_item(pamh, item, &value); \
21 value = value ? value : default_value ; \
22 } while (0)
23
24 static void log_items(pam_handle_t *pamh, const char *function, int flags)
25 {
26 const void *service=NULL, *user=NULL, *terminal=NULL,
27 *rhost=NULL, *ruser=NULL;
28
29 OBTAIN(PAM_SERVICE, service, "<unknown>");
30 OBTAIN(PAM_TTY, terminal, "<unknown>");
31 OBTAIN(PAM_USER, user, "<unknown>");
32 OBTAIN(PAM_RUSER, ruser, "<unknown>");
33 OBTAIN(PAM_RHOST, rhost, "<unknown>");
34
35 pam_syslog(pamh, LOG_NOTICE,
36 "function=[%s] flags=%#x service=[%s] terminal=[%s] user=[%s]"
37 " ruser=[%s] rhost=[%s]\n", function, flags,
38 (const char *) service, (const char *) terminal,
39 (const char *) user, (const char *) ruser,
40 (const char *) rhost);
41 }
42
43 /* --- authentication management functions (only) --- */
44
45 int pam_sm_authenticate(pam_handle_t *pamh, int flags,
46 int argc UNUSED, const char **argv UNUSED)
47 {
48 log_items(pamh, __FUNCTION__, flags);
49 return PAM_IGNORE;
50 }
51
52 int pam_sm_setcred(pam_handle_t *pamh, int flags,
53 int argc UNUSED, const char **argv UNUSED)
54 {
55 log_items(pamh, __FUNCTION__, flags);
56 return PAM_IGNORE;
57 }
58
59 /* password updating functions */
60
61 int pam_sm_chauthtok(pam_handle_t *pamh, int flags,
62 int argc UNUSED, const char **argv UNUSED)
63 {
64 log_items(pamh, __FUNCTION__, flags);
65 return PAM_IGNORE;
66 }
67
68 int
69 pam_sm_acct_mgmt(pam_handle_t *pamh, int flags,
70 int argc UNUSED, const char **argv UNUSED)
71 {
72 log_items(pamh, __FUNCTION__, flags);
73 return PAM_IGNORE;
74 }
75
76 int
77 pam_sm_open_session(pam_handle_t *pamh, int flags,
78 int argc UNUSED, const char **argv UNUSED)
79 {
80 log_items(pamh, __FUNCTION__, flags);
81 return PAM_IGNORE;
82 }
83
84 int
85 pam_sm_close_session(pam_handle_t *pamh, int flags,
86 int argc UNUSED, const char **argv UNUSED)
87 {
88 log_items(pamh, __FUNCTION__, flags);
89 return PAM_IGNORE;
90 }
91
92 /* end of module definition */