dovecot-2.2: rawlog: Added -i parameter to include the remote IP...
dovecot at dovecot.org
dovecot at dovecot.org
Mon Jul 21 07:55:19 UTC 2014
details: http://hg.dovecot.org/dovecot-2.2/rev/fbf434ad2485
changeset: 17628:fbf434ad2485
user: Timo Sirainen <tss at iki.fi>
date: Mon Jul 21 10:53:19 2014 +0300
description:
rawlog: Added -i parameter to include the remote IP address in the filename.
diffstat:
src/util/rawlog.c | 33 ++++++++++++++++++++++-----------
1 files changed, 22 insertions(+), 11 deletions(-)
diffs (106 lines):
diff -r fd0616d553b0 -r fbf434ad2485 src/util/rawlog.c
--- a/src/util/rawlog.c Fri Jul 11 16:49:35 2014 +0300
+++ b/src/util/rawlog.c Mon Jul 21 10:53:19 2014 +0300
@@ -28,7 +28,8 @@
RAWLOG_FLAG_LOG_INPUT = 0x01,
RAWLOG_FLAG_LOG_OUTPUT = 0x02,
RAWLOG_FLAG_LOG_TIMESTAMPS = 0x04,
- RAWLOG_FLAG_LOG_BOUNDARIES = 0X10
+ RAWLOG_FLAG_LOG_BOUNDARIES = 0x10,
+ RAWLOG_FLAG_LOG_IP_IN_FILENAME = 0x20
};
struct rawlog_proxy {
@@ -212,16 +213,23 @@
return 1;
}
-static void proxy_open_logs(struct rawlog_proxy *proxy, const char *path)
+static void proxy_open_logs(struct rawlog_proxy *proxy, const char *path,
+ const char *ip_addr)
{
const char *fname, *timestamp;
+ string_t *path_prefix;
int fd;
timestamp = t_strflocaltime("%Y%m%d-%H%M%S", time(NULL));
+ path_prefix = t_str_new(128);
+ str_printfa(path_prefix, "%s/", path);
+ if (ip_addr != NULL &&
+ (proxy->flags & RAWLOG_FLAG_LOG_IP_IN_FILENAME) != 0)
+ str_printfa(path_prefix, "%s-", ip_addr);
+ str_printfa(path_prefix, "%s-%s.", timestamp, dec2str(getpid()));
if ((proxy->flags & RAWLOG_FLAG_LOG_INPUT) != 0) {
- fname = t_strdup_printf("%s/%s-%s.in", path, timestamp,
- dec2str(getpid()));
+ fname = t_strdup_printf("%s.in", str_c(path_prefix));
fd = open(fname, O_CREAT|O_EXCL|O_WRONLY, 0600);
if (fd == -1) {
i_error("rawlog_open: creat(%s): %m", fname);
@@ -232,8 +240,7 @@
}
if ((proxy->flags & RAWLOG_FLAG_LOG_OUTPUT) != 0) {
- fname = t_strdup_printf("%s/%s-%s.out", path, timestamp,
- dec2str(getpid()));
+ fname = t_strdup_printf("%s.out", str_c(path_prefix));
fd = open(fname, O_CREAT|O_EXCL|O_WRONLY, 0600);
if (fd == -1) {
i_error("rawlog_open: creat(%s): %m", fname);
@@ -247,7 +254,8 @@
static struct rawlog_proxy *
rawlog_proxy_create(int client_in_fd, int client_out_fd, int server_fd,
- const char *path, enum rawlog_flags flags)
+ const char *path, const char *ip_addr,
+ enum rawlog_flags flags)
{
struct rawlog_proxy *proxy;
@@ -273,7 +281,7 @@
proxy->flags = flags;
proxy->prev_lf_in = proxy->prev_lf_out = TRUE;
- proxy_open_logs(proxy, path);
+ proxy_open_logs(proxy, path, ip_addr);
return proxy;
}
@@ -338,7 +346,7 @@
dec2str(getppid())));
ioloop = io_loop_create();
- (void)rawlog_proxy_create(0, 1, sfd[0], path, flags);
+ (void)rawlog_proxy_create(0, 1, sfd[0], path, getenv("IP"), flags);
io_loop_run(ioloop);
io_loop_destroy(&ioloop);
@@ -354,7 +362,7 @@
int c;
master_service = master_service_init("rawlog", 0,
- &argc, &argv, "+f:obt");
+ &argc, &argv, "+f:obit");
while ((c = master_getopt(master_service)) > 0) {
switch (c) {
case 'f':
@@ -368,6 +376,9 @@
case 'b':
flags |= RAWLOG_FLAG_LOG_BOUNDARIES;
break;
+ case 'i':
+ flags |= RAWLOG_FLAG_LOG_IP_IN_FILENAME;
+ break;
case 't':
flags |= RAWLOG_FLAG_LOG_TIMESTAMPS;
break;
@@ -379,7 +390,7 @@
argv += optind;
if (argc < 1)
- i_fatal("Usage: rawlog [-f in|out] [-b] [-t] <binary> <arguments>");
+ i_fatal("Usage: rawlog [-f in|out] [-i] [-b] [-t] <binary> <arguments>");
master_service_init_log(master_service, "rawlog: ");
master_service_init_finish(master_service);
More information about the dovecot-cvs
mailing list