- markus@cvs.openbsd.org 2002/03/29 18:59:32
[session.c session.h] retrieve last login time before the pty is allocated, store per session
This commit is contained in:
parent
2bf56e2dba
commit
c447fee9f1
|
@ -10,6 +10,9 @@
|
||||||
- markus@cvs.openbsd.org 2002/03/28 15:34:51
|
- markus@cvs.openbsd.org 2002/03/28 15:34:51
|
||||||
[session.c]
|
[session.c]
|
||||||
do not call record_login twice (for use_privsep)
|
do not call record_login twice (for use_privsep)
|
||||||
|
- markus@cvs.openbsd.org 2002/03/29 18:59:32
|
||||||
|
[session.c session.h]
|
||||||
|
retrieve last login time before the pty is allocated, store per session
|
||||||
|
|
||||||
20020401
|
20020401
|
||||||
- (stevesk) [monitor.c] PAM should work again; will *not* work with
|
- (stevesk) [monitor.c] PAM should work again; will *not* work with
|
||||||
|
@ -8117,4 +8120,4 @@
|
||||||
- Wrote replacements for strlcpy and mkdtemp
|
- Wrote replacements for strlcpy and mkdtemp
|
||||||
- Released 1.0pre1
|
- Released 1.0pre1
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.2009 2002/04/02 20:32:46 mouring Exp $
|
$Id: ChangeLog,v 1.2010 2002/04/02 20:35:35 mouring Exp $
|
||||||
|
|
26
session.c
26
session.c
|
@ -33,7 +33,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$OpenBSD: session.c,v 1.133 2002/03/28 15:34:51 markus Exp $");
|
RCSID("$OpenBSD: session.c,v 1.134 2002/03/29 18:59:31 markus Exp $");
|
||||||
|
|
||||||
#include "ssh.h"
|
#include "ssh.h"
|
||||||
#include "ssh1.h"
|
#include "ssh1.h"
|
||||||
|
@ -619,10 +619,8 @@ void
|
||||||
do_login(Session *s, const char *command)
|
do_login(Session *s, const char *command)
|
||||||
{
|
{
|
||||||
char *time_string;
|
char *time_string;
|
||||||
char hostname[MAXHOSTNAMELEN];
|
|
||||||
socklen_t fromlen;
|
socklen_t fromlen;
|
||||||
struct sockaddr_storage from;
|
struct sockaddr_storage from;
|
||||||
time_t last_login_time;
|
|
||||||
struct passwd * pw = s->pw;
|
struct passwd * pw = s->pw;
|
||||||
pid_t pid = getpid();
|
pid_t pid = getpid();
|
||||||
|
|
||||||
|
@ -640,13 +638,6 @@ do_login(Session *s, const char *command)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the time and hostname when the user last logged in. */
|
|
||||||
if (options.print_lastlog) {
|
|
||||||
hostname[0] = '\0';
|
|
||||||
last_login_time = get_last_login_time(pw->pw_uid, pw->pw_name,
|
|
||||||
hostname, sizeof(hostname));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Record that there was a login on that tty from the remote host. */
|
/* Record that there was a login on that tty from the remote host. */
|
||||||
if (!use_privsep)
|
if (!use_privsep)
|
||||||
record_login(pid, s->tty, pw->pw_name, pw->pw_uid,
|
record_login(pid, s->tty, pw->pw_name, pw->pw_uid,
|
||||||
|
@ -677,14 +668,15 @@ do_login(Session *s, const char *command)
|
||||||
printf("%s\n", aixloginmsg);
|
printf("%s\n", aixloginmsg);
|
||||||
#endif /* WITH_AIXAUTHENTICATE */
|
#endif /* WITH_AIXAUTHENTICATE */
|
||||||
|
|
||||||
if (options.print_lastlog && last_login_time != 0) {
|
if (options.print_lastlog && s->last_login_time != 0) {
|
||||||
time_string = ctime(&last_login_time);
|
time_string = ctime(&s->last_login_time);
|
||||||
if (strchr(time_string, '\n'))
|
if (strchr(time_string, '\n'))
|
||||||
*strchr(time_string, '\n') = 0;
|
*strchr(time_string, '\n') = 0;
|
||||||
if (strcmp(hostname, "") == 0)
|
if (strcmp(s->hostname, "") == 0)
|
||||||
printf("Last login: %s\r\n", time_string);
|
printf("Last login: %s\r\n", time_string);
|
||||||
else
|
else
|
||||||
printf("Last login: %s from %s\r\n", time_string, hostname);
|
printf("Last login: %s from %s\r\n", time_string,
|
||||||
|
s->hostname);
|
||||||
}
|
}
|
||||||
|
|
||||||
do_motd();
|
do_motd();
|
||||||
|
@ -1442,6 +1434,12 @@ session_pty_req(Session *s)
|
||||||
packet_disconnect("Protocol error: you already have a pty.");
|
packet_disconnect("Protocol error: you already have a pty.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
/* Get the time and hostname when the user last logged in. */
|
||||||
|
if (options.print_lastlog) {
|
||||||
|
s->hostname[0] = '\0';
|
||||||
|
s->last_login_time = get_last_login_time(s->pw->pw_uid,
|
||||||
|
s->pw->pw_name, s->hostname, sizeof(s->hostname));
|
||||||
|
}
|
||||||
|
|
||||||
s->term = packet_get_string(&len);
|
s->term = packet_get_string(&len);
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: session.h,v 1.16 2002/03/19 10:35:39 markus Exp $ */
|
/* $OpenBSD: session.h,v 1.17 2002/03/29 18:59:32 markus Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
|
* Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
|
||||||
|
@ -39,6 +39,9 @@ struct Session {
|
||||||
int ptyfd, ttyfd, ptymaster;
|
int ptyfd, ttyfd, ptymaster;
|
||||||
int row, col, xpixel, ypixel;
|
int row, col, xpixel, ypixel;
|
||||||
char tty[TTYSZ];
|
char tty[TTYSZ];
|
||||||
|
/* last login */
|
||||||
|
char hostname[MAXHOSTNAMELEN];
|
||||||
|
time_t last_login_time;
|
||||||
/* X11 */
|
/* X11 */
|
||||||
int display_number;
|
int display_number;
|
||||||
char *display;
|
char *display;
|
||||||
|
|
Loading…
Reference in New Issue