1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-11-23 00:43:28 +00:00

Fix wtmp and utmp logging.

PR:		27720
Submitted by:	maintainer
This commit is contained in:
Daniel Harris 2001-05-30 01:04:24 +00:00
parent 37e29630b9
commit d9c0b1517f
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=43295
5 changed files with 120 additions and 0 deletions

View File

@ -7,6 +7,7 @@
PORTNAME= lukemftpd
PORTVERSION= 1.1
PORTREVISION= 1
CATEGORIES= ftp ipv6
MASTER_SITES= ftp://ftp.netbsd.org/pub/NetBSD/misc/lukemftp/ \
ftp://ftp.nuug.no/pub/anders/distfiles/

View File

@ -0,0 +1,53 @@
--- src/ftpd.c.orig Wed Apr 25 08:25:43 2001
+++ src/ftpd.c Sat May 26 16:46:35 2001
@@ -102,6 +102,8 @@
* FTP server.
*/
+#define NO_UTMP
+
#define FTP_NAMES
#include "lukemftpd.h"
@@ -780,9 +782,9 @@
if (logged_in) {
#ifdef NO_UTMP
if (dowtmp)
- logwtmp(ttyline, "", "");
+ ftpd_logwtmp(ttyline, "", "");
if (doutmp)
- logout(utmp.ut_line);
+ ftpd_logout(utmp.ut_line);
#endif /* NO_UTMP */
}
/* reset login state */
@@ -912,7 +914,7 @@
/* open wtmp before chroot */
#ifdef NO_UTMP
if (dowtmp)
- logwtmp(ttyline, pw->pw_name, remotehost);
+ ftpd_logwtmp(ttyline, pw->pw_name, remotehost);
/* open utmp before chroot */
if (doutmp) {
@@ -921,7 +923,7 @@
(void)strncpy(utmp.ut_name, pw->pw_name, sizeof(utmp.ut_name));
(void)strncpy(utmp.ut_host, remotehost, sizeof(utmp.ut_host));
(void)strncpy(utmp.ut_line, ttyline, sizeof(utmp.ut_line));
- login(&utmp);
+ ftpd_login(&utmp);
}
#endif /* NO_UTMP */
@@ -2155,9 +2157,9 @@
if (logged_in) {
#ifdef NO_UTMP
if (dowtmp)
- logwtmp(ttyline, "", "");
+ ftpd_logwtmp(ttyline, "", "");
if (doutmp)
- logout(utmp.ut_line);
+ ftpd_logout(utmp.ut_line);
#endif /* NO_UTMP */
#ifdef KERBEROS
if (!notickets && krbtkfile_env)

View File

@ -0,0 +1,20 @@
--- src/logutmp.c.old Sat May 26 16:07:13 2001
+++ src/logutmp.c Sat May 26 16:07:39 2001
@@ -45,7 +45,7 @@
*/
void
-login(const UTMP *ut)
+ftpd_login(const UTMP *ut)
{
UTMP ubuf;
@@ -85,7 +85,7 @@
}
int
-logout(const char *line)
+ftpd_logout(const char *line)
{
UTMP ut;
int rval;

View File

@ -0,0 +1,34 @@
--- src/logwtmp.c.old Sat May 26 16:08:11 2001
+++ src/logwtmp.c Sat May 26 16:15:20 2001
@@ -46,10 +46,30 @@
* after login, but before logout).
*/
void
-logwtmp(const char *line, const char *name, const char *host)
+ftpd_logwtmp(const char *line, const char *name, const char *host)
{
struct utmp ut;
struct stat buf;
+
+ if (strlen(host) > UT_HOSTSIZE) {
+ struct addrinfo hints, *res;
+ int error;
+ static char hostbuf[BUFSIZ];
+
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = PF_UNSPEC;
+ error = getaddrinfo(host, NULL, &hints, &res);
+ if (error)
+ host = "invalid hostname";
+ else {
+ getnameinfo(res->ai_addr, res->ai_addrlen,
+ hostbuf, sizeof(hostbuf), NULL, 0,
+ NI_NUMERICHOST);
+ host = hostbuf;
+ if (strlen(host) > UT_HOSTSIZE)
+ host[UT_HOSTSIZE] = '\0';
+ }
+ }
if (fd < 0 && (fd = open(_PATH_WTMP, O_WRONLY|O_APPEND, 0)) < 0)
return;

View File

@ -0,0 +1,12 @@
--- src/Makefile.in.old Sat May 26 16:33:44 2001
+++ src/Makefile.in Sat May 26 16:34:32 2001
@@ -22,8 +22,7 @@
INSTALL = @INSTALL@
PROG = ftpd
-OBJS = cmds.o conf.o ftpd.o ftpcmd.o popen.o @LSOBJS@
-# removed: logutmp.o logwtmp.o
+OBJS = cmds.o conf.o ftpd.o ftpcmd.o popen.o logutmp.o logwtmp.o @LSOBJS@
all: ${PROG}