[prev in list] [next in list] [prev in thread] [next in thread]
List: proftpd-committers
Subject: [ProFTPD-committers] CVS: proftpd/src log.c,1.73,1.74 main.c,1.274,1.275 netaddr.c,1.50,1.51
From: TJ Saunders <castaglia () users ! sourceforge ! net>
Date: 2005-09-19 21:35:41
Message-ID: E1EHTIb-0007kn-09 () sc8-pr-cvs1 ! sourceforge ! net
[Download RAW message or body]
Update of /cvsroot/proftp/proftpd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29737/src
Modified Files:
log.c main.c netaddr.c
Log Message:
Bug#2695 - Client IP/host is not logged when client exits.
Index: log.c
===================================================================
RCS file: /cvsroot/proftp/proftpd/src/log.c,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -r1.73 -r1.74
--- log.c 14 Jun 2005 01:23:45 -0000 1.73
+++ log.c 19 Sep 2005 21:35:38 -0000 1.74
@@ -429,21 +429,25 @@
memset(serverinfo, '\0', sizeof(serverinfo));
- if (main_server && main_server->ServerFQDN) {
+ if (main_server &&
+ main_server->ServerFQDN) {
+ pr_netaddr_t *remote_addr = pr_netaddr_get_sess_remote_addr();
+ const char *remote_name = pr_netaddr_get_sess_remote_name();
+
snprintf(serverinfo, sizeof(serverinfo), "%s", main_server->ServerFQDN);
serverinfo[sizeof(serverinfo)-1] = '\0';
- if (session.c && session.c->remote_name) {
+ if (remote_addr && remote_name) {
snprintf(serverinfo + strlen(serverinfo),
sizeof(serverinfo) - strlen(serverinfo), " (%s[%s])",
- session.c->remote_name,
- pr_netaddr_get_ipstr(session.c->remote_addr));
+ remote_name, pr_netaddr_get_ipstr(remote_addr));
serverinfo[sizeof(serverinfo)-1] = '\0';
}
}
- if (logstderr || !main_server) {
+ if (logstderr ||
+ !main_server) {
fprintf(stderr, "%s - %s\n", serverinfo, s);
return;
}
Index: main.c
===================================================================
RCS file: /cvsroot/proftp/proftpd/src/main.c,v
retrieving revision 1.274
retrieving revision 1.275
diff -u -r1.274 -r1.275
--- main.c 4 Sep 2005 23:57:02 -0000 1.274
+++ main.c 19 Sep 2005 21:35:38 -0000 1.275
@@ -380,8 +380,9 @@
pr_event_generate("core.exit", NULL);
if (!is_master ||
- (ServerType == SERVER_INETD && !syntax_check))
+ (ServerType == SERVER_INETD && !syntax_check)) {
pr_log_pri(PR_LOG_INFO, "FTP session closed.");
+ }
log_closesyslog();
}
@@ -1235,6 +1236,8 @@
session.sf_flags = 0;
session.sp_flags = 0;
+ pr_netaddr_set_sess_addrs();
+
/* Close the write side of the semaphore pipe to tell the parent
* we are all grown up and have finished housekeeping (closing
* former listen sockets).
Index: netaddr.c
===================================================================
RCS file: /cvsroot/proftp/proftpd/src/netaddr.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- netaddr.c 5 Sep 2005 00:05:44 -0000 1.50
+++ netaddr.c 19 Sep 2005 21:35:38 -0000 1.51
@@ -33,6 +33,13 @@
#define IN_IS_ADDR_LOOPBACK(a) \
((((long int) (a)->s_addr) & 0xff000000) == 0x7f000000)
+static pr_netaddr_t sess_local_addr;
+static int have_sess_local_addr = FALSE;
+
+static pr_netaddr_t sess_remote_addr;
+static char sess_remote_name[PR_TUNABLE_BUFFER_SIZE];
+static int have_sess_remote_addr = FALSE;
+
/* Do reverse DNS lookups? */
static int reverse_dns = 1;
@@ -1068,3 +1075,46 @@
return -1;
}
+pr_netaddr_t *pr_netaddr_get_sess_local_addr(void) {
+ if (have_sess_local_addr) {
+ return &sess_local_addr;
+ }
+
+ errno = ENOENT;
+ return NULL;
+}
+
+pr_netaddr_t *pr_netaddr_get_sess_remote_addr(void) {
+ if (have_sess_remote_addr) {
+ return &sess_remote_addr;
+ }
+
+ errno = ENOENT;
+ return NULL;
+}
+
+const char *pr_netaddr_get_sess_remote_name(void) {
+ if (have_sess_remote_addr) {
+ return sess_remote_name;
+ }
+
+ errno = ENOENT;
+ return NULL;
+}
+
+void pr_netaddr_set_sess_addrs(void) {
+ pr_netaddr_set_family(&sess_local_addr,
+ pr_netaddr_get_family(session.c->local_addr));
+ pr_netaddr_set_sockaddr(&sess_local_addr,
+ pr_netaddr_get_sockaddr(session.c->local_addr));
+ have_sess_local_addr = TRUE;
+
+ pr_netaddr_set_family(&sess_remote_addr,
+ pr_netaddr_get_family(session.c->remote_addr));
+ pr_netaddr_set_sockaddr(&sess_remote_addr,
+ pr_netaddr_get_sockaddr(session.c->remote_addr));
+
+ memset(sess_remote_name, '\0', sizeof(sess_remote_name));
+ sstrncpy(sess_remote_name, session.c->remote_name, sizeof(sess_remote_name));
+ have_sess_remote_addr = TRUE;
+}
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server.
Download it for free - -and be entered to win a 42" plasma tv or your very
own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
ProFTPD Committers Mailing List
proftpd-committers@proftpd.org
https://lists.sourceforge.net/lists/listinfo/proftp-committers
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic