53
53
#include "public.h"
56
pam_log_session (pam_handle_t *pamh, int flags, int argc,
57
const char **argv, const char *kind)
61
char *service, *tty, *rhost;
65
memset (&options, 0, sizeof (options));
66
options.log_level = -1; /* Initialize to default "none". */
68
if (get_options (pamh, &options, "session", argc, argv) < 0)
70
pam_syslog (pamh, LOG_ERR, "cannot get options");
71
return PAM_SYSTEM_ERR;
74
/* get the user name */
75
if ((retval = pam_get_user (pamh, &name, NULL)) != PAM_SUCCESS)
78
if (name == NULL || name[0] == '\0')
79
return PAM_SESSION_ERR;
81
/* Move this after getting the user name, else PAM test suite
83
if (options.log_level == -1)
86
retval = pam_get_item (pamh, PAM_SERVICE, (void *) &service);
87
if (retval != PAM_SUCCESS)
92
retval = pam_get_item(pamh, PAM_TTY, (void *) &tty);
93
if (retval !=PAM_SUCCESS)
96
retval = pam_get_item(pamh, PAM_RHOST, (void *) &rhost);
97
if (retval !=PAM_SUCCESS)
102
if (asprintf (&logmsg, "session %s for user %s: service=%s, tty=%s",
103
kind, name, service, tty) == -1)
104
return PAM_SESSION_ERR;
106
else if (!tty && rhost)
108
if (asprintf (&logmsg,
109
"session %s for user %s: service=%s, rhost=%s",
110
kind, name, service, rhost) == -1)
111
return PAM_SESSION_ERR;
113
else if (tty && rhost)
115
if (asprintf (&logmsg,
116
"session %s for user %s: service=%s, tty=%s, rhost=%s",
117
kind, name, service, tty, rhost) == -1)
118
return PAM_SESSION_ERR;
122
if (asprintf (&logmsg, "session %s for user %s: service=%s",
123
kind, name, service) == -1)
124
return PAM_SESSION_ERR;
127
pam_syslog (pamh, options.log_level, "%s", logmsg);
56
134
pam_sm_open_session (pam_handle_t *pamh, int flags, int argc,
57
135
const char **argv)
64
memset (&options, 0, sizeof (options));
65
options.log_level = -1; /* Initialize to default "none". */
67
if (get_options (pamh, &options, "session", argc, argv) < 0)
69
pam_syslog (pamh, LOG_ERR, "cannot get options");
70
return PAM_SYSTEM_ERR;
73
/* get the user name */
74
if ((retval = pam_get_user (pamh, &name, NULL)) != PAM_SUCCESS)
77
if (name == NULL || name[0] == '\0')
78
return PAM_SESSION_ERR;
80
/* Move this after getting the user name, else PAM test suite
82
if (options.log_level == -1)
85
retval = pam_get_item (pamh, PAM_SERVICE, (void *) &service);
86
if (retval != PAM_SUCCESS)
91
pam_syslog (pamh, options.log_level,
92
"session started for user %s, service %s\n",
137
return pam_log_session (pamh, flags, argc, argv, "started");
99
141
pam_sm_close_session (pam_handle_t * pamh, int flags,
100
142
int argc, const char **argv)
107
memset (&options, 0, sizeof (options));
108
options.log_level = -1; /* Initialize to default "none". */
110
if (get_options (pamh, &options, "session", argc, argv) < 0)
112
pam_syslog (pamh, LOG_ERR, "cannot get options");
113
return PAM_SYSTEM_ERR;
116
/* get the user name */
117
if ((retval = pam_get_user (pamh, &name, NULL)) != PAM_SUCCESS)
120
if (name == NULL || name[0] == '\0')
121
return PAM_SESSION_ERR;
123
/* Move this after getting the user name, else PAM test suite
125
if (options.log_level == -1)
128
retval = pam_get_item (pamh, PAM_SERVICE, (void *) &service);
129
if (retval != PAM_SUCCESS)
134
pam_syslog (pamh, options.log_level,
135
"session finished for user %s, service %s\n",
144
return pam_log_session (pamh, flags, argc, argv, "finished");