mirror of
git://anongit.mindrot.org/openssh.git
synced 2025-03-01 12:20:43 +00:00
- djm@cvs.openbsd.org 2001/04/16 08:19:31
[session.c] Split motd and hushlogin checks into seperate functions, helps for portable. From Chris Adams <cmadams@hiwaay.net>; ok markus@
This commit is contained in:
parent
0b1e0a1218
commit
cf205e8f35
@ -30,6 +30,10 @@
|
|||||||
- deraadt@cvs.openbsd.org 2001/04/16 08:05:34
|
- deraadt@cvs.openbsd.org 2001/04/16 08:05:34
|
||||||
[xmalloc.c]
|
[xmalloc.c]
|
||||||
xrealloc dealing with ptr == nULL; mouring
|
xrealloc dealing with ptr == nULL; mouring
|
||||||
|
- djm@cvs.openbsd.org 2001/04/16 08:19:31
|
||||||
|
[session.c]
|
||||||
|
Split motd and hushlogin checks into seperate functions, helps for
|
||||||
|
portable. From Chris Adams <cmadams@hiwaay.net>; ok markus@
|
||||||
|
|
||||||
20010415
|
20010415
|
||||||
- OpenBSD CVS Sync
|
- OpenBSD CVS Sync
|
||||||
@ -5115,4 +5119,4 @@
|
|||||||
- Wrote replacements for strlcpy and mkdtemp
|
- Wrote replacements for strlcpy and mkdtemp
|
||||||
- Released 1.0pre1
|
- Released 1.0pre1
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.1126 2001/04/16 08:27:07 djm Exp $
|
$Id: ChangeLog,v 1.1127 2001/04/16 08:29:15 djm Exp $
|
||||||
|
55
session.c
55
session.c
@ -33,7 +33,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$OpenBSD: session.c,v 1.72 2001/04/14 16:33:20 stevesk Exp $");
|
RCSID("$OpenBSD: session.c,v 1.73 2001/04/16 08:19:31 djm Exp $");
|
||||||
|
|
||||||
#include "ssh.h"
|
#include "ssh.h"
|
||||||
#include "ssh1.h"
|
#include "ssh1.h"
|
||||||
@ -128,6 +128,8 @@ void do_exec_pty(Session *s, const char *command);
|
|||||||
void do_exec_no_pty(Session *s, const char *command);
|
void do_exec_no_pty(Session *s, const char *command);
|
||||||
void do_login(Session *s, const char *command);
|
void do_login(Session *s, const char *command);
|
||||||
void do_child(Session *s, const char *command);
|
void do_child(Session *s, const char *command);
|
||||||
|
void do_motd(void);
|
||||||
|
int check_quietlogin(Session *s, const char *command);
|
||||||
|
|
||||||
void do_authenticated1(Authctxt *authctxt);
|
void do_authenticated1(Authctxt *authctxt);
|
||||||
void do_authenticated2(Authctxt *authctxt);
|
void do_authenticated2(Authctxt *authctxt);
|
||||||
@ -681,13 +683,10 @@ do_exec_pty(Session *s, const char *command)
|
|||||||
void
|
void
|
||||||
do_login(Session *s, const char *command)
|
do_login(Session *s, const char *command)
|
||||||
{
|
{
|
||||||
FILE *f;
|
|
||||||
char *time_string;
|
char *time_string;
|
||||||
char buf[256];
|
|
||||||
char hostname[MAXHOSTNAMELEN];
|
char hostname[MAXHOSTNAMELEN];
|
||||||
socklen_t fromlen;
|
socklen_t fromlen;
|
||||||
struct sockaddr_storage from;
|
struct sockaddr_storage from;
|
||||||
struct stat st;
|
|
||||||
time_t last_login_time;
|
time_t last_login_time;
|
||||||
struct passwd * pw = s->pw;
|
struct passwd * pw = s->pw;
|
||||||
pid_t pid = getpid();
|
pid_t pid = getpid();
|
||||||
@ -729,15 +728,7 @@ do_login(Session *s, const char *command)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Done if .hushlogin exists or a command given. */
|
if (check_quietlogin(s, command))
|
||||||
if (command != NULL)
|
|
||||||
return;
|
|
||||||
snprintf(buf, sizeof(buf), "%.200s/.hushlogin", pw->pw_dir);
|
|
||||||
#ifdef HAVE_LOGIN_CAP
|
|
||||||
if (login_getcapbool(lc, "hushlogin", 0) || stat(buf, &st) >= 0)
|
|
||||||
#else
|
|
||||||
if (stat(buf, &st) >= 0)
|
|
||||||
#endif
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef USE_PAM
|
#ifdef USE_PAM
|
||||||
@ -758,6 +749,19 @@ do_login(Session *s, const char *command)
|
|||||||
else
|
else
|
||||||
printf("Last login: %s from %s\r\n", time_string, hostname);
|
printf("Last login: %s from %s\r\n", time_string, hostname);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
do_motd();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Display the message of the day.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
do_motd(void)
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
char buf[256];
|
||||||
|
|
||||||
if (options.print_motd) {
|
if (options.print_motd) {
|
||||||
#ifdef HAVE_LOGIN_CAP
|
#ifdef HAVE_LOGIN_CAP
|
||||||
f = fopen(login_getcapstr(lc, "welcome", "/etc/motd",
|
f = fopen(login_getcapstr(lc, "welcome", "/etc/motd",
|
||||||
@ -773,6 +777,31 @@ do_login(Session *s, const char *command)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check for quiet login, either .hushlogin or command given.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
check_quietlogin(Session *s, const char *command)
|
||||||
|
{
|
||||||
|
char buf[256];
|
||||||
|
struct passwd * pw = s->pw;
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
/* Return 1 if .hushlogin exists or a command given. */
|
||||||
|
if (command != NULL)
|
||||||
|
return 1;
|
||||||
|
snprintf(buf, sizeof(buf), "%.200s/.hushlogin", pw->pw_dir);
|
||||||
|
#ifdef HAVE_LOGIN_CAP
|
||||||
|
if (login_getcapbool(lc, "hushlogin", 0) || stat(buf, &st) >= 0)
|
||||||
|
return 1;
|
||||||
|
#else
|
||||||
|
if (stat(buf, &st) >= 0)
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sets the value of the given variable in the environment. If the variable
|
* Sets the value of the given variable in the environment. If the variable
|
||||||
* already exists, its value is overriden.
|
* already exists, its value is overriden.
|
||||||
|
Loading…
Reference in New Issue
Block a user