--- lmtp2nntp_main.c 2002/03/13 13:58:39 1.49
+++ lmtp2nntp_main.c 2002/03/13 14:41:13 1.50
@@ -116,6 +116,23 @@
static void resetsession(struct session *session);
int groupmatch(char *, size_t, char *);
+void logbook(l2_channel_t *ch, l2_level_t level, const char *fmt, ...)
+{
+ va_list ap;
+ l2_channel_t *ch2 = NULL;
+
+ if (strchr(fmt, '$') == NULL) {
+ if (l2_channel_downstream(ch, &ch2) == L2_OK)
+ ch = ch2;
+ else
+ return;
+ }
+ va_start(ap, fmt);
+ l2_channel_vlog(ch, level, fmt, ap);
+ va_end(ap);
+ return;
+}
+
static var_syntax_t syntax_ctx = {
'\\', /* escape */
'$', /* varinit */
@@ -127,12 +144,6 @@
"a-zA-Z0-9.-" /* namechars */
};
-#if 0
-typedef struct {
- l2_channel_t *l2;
-} logctx_t;
-#endif
-
static var_rc_t ctx_lookup(
var_t *var,
void *_ctx,
@@ -143,18 +154,8 @@
var_rc_t rc;
char *cp;
optionval_t *ov;
-#if 0
- logctx_t *logctx = NULL;
- if ((logctx = (logctx_t *)malloc(sizeof(logctx_t))) != NULL) {
- if (l2_channel_upstream(ctx->l2, &logctx->l2) != L2_OK) {
- if (l2_channel_downstream(ctx->l2, &logctx->l2) != L2_OK) {
- logctx->l2 = NULL;
- }
- }
- }
- if (logctx != NULL && logctx->l2 != NULL) log2(logctx, DEBUG, "ctx_lookup variable \"%s\" (%d)", var_ptr, var_len);
-#endif
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "ctx_lookup variable \"%s\" (%d)", var_ptr, var_len);
rc = VAR_ERR_UNDEFINED_VARIABLE;
if (strncasecmp(var_ptr, "option.", strlen("option.")) == 0) {
@@ -213,18 +214,13 @@
free(cp);
}
-#if 0
if (rc == VAR_OK) {
- if (logctx != NULL && logctx->l2 != NULL) log4(ctx, DEBUG, "ctx_lookup variable \"%s\" (%d) ok: result is \"%s\" (%d)", var_ptr, var_len, *val_ptr, *val_len);
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "ctx_lookup variable \"%s\" (%d) ok: result is \"%s\" (%d)", var_ptr, var_len, *val_ptr, *val_len);
}
else {
- if (logctx != NULL && logctx->l2 != NULL) log4(ctx, DEBUG, "ctx_lookup variable \"%s\" (%d) failed: %s (%d)", var_ptr, var_len, var_strerror(var, rc, &cp) == VAR_OK ? cp : "Unknown Error", rc);
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "ctx_lookup variable \"%s\" (%d) failed: %s (%d)", var_ptr, var_len, var_strerror(var, rc, &cp) == VAR_OK ? cp : "Unknown Error", rc);
}
- if (logctx != NULL)
- free(logctx);
-#endif
-
return rc;
}
@@ -249,10 +245,10 @@
else
rc = read(ctx->fdIOi, buf, nbytes);
if (rc == -1)
- log0(ctx, TRACE, "LMTP read error: %m");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "LMTP read error: %m");
else
- log3(ctx, TRACE, "LMTP %5d << \"%{text}D\"", rc, buf, rc);
- log1(ctx, DEBUG, "hook_lmtp_read() return, rc=%d", rc);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "LMTP %5d << \"%{text}D\"", rc, buf, rc);
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "hook_lmtp_read() return, rc=%d", rc);
return rc;
}
@@ -263,7 +259,7 @@
size_t n;
sa_rc_t rv;
- log3(ctx, TRACE, "LMTP %5d >> \"%{text}D\"", nbytes, buf, nbytes);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "LMTP %5d >> \"%{text}D\"", nbytes, buf, nbytes);
if (ctx->saIO != NULL) {
if ((rv = sa_write(ctx->saIO, buf, nbytes, &n)) != SA_OK)
rc = -1;
@@ -273,7 +269,7 @@
else
rc = write(ctx->fdIOo, buf, nbytes);
if (rc == -1)
- log0(ctx, TRACE, "LMTP write error: %m");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "LMTP write error: %m");
return rc;
}
@@ -289,9 +285,9 @@
else
rc = (ssize_t)n;
if (rc == -1)
- log0(ctx, TRACE, "NNTP read error: %m");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "NNTP read error: %m");
else
- log3(ctx, TRACE, "NNTP %5d << \"%{text}D\"", rc, buf, rc);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "NNTP %5d << \"%{text}D\"", rc, buf, rc);
return rc;
}
@@ -302,13 +298,13 @@
size_t n;
sa_rc_t rv;
- log3(ctx, TRACE, "NNTP %5d >> \"%{text}D\"", nbytes, buf, nbytes);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "NNTP %5d >> \"%{text}D\"", nbytes, buf, nbytes);
if ((rv = sa_write(ctx->sa, buf, nbytes, &n)) != SA_OK)
rc = -1;
else
rc = (ssize_t)n;
if (rc == -1)
- log0(ctx, TRACE, "NNTP write error: %m");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "NNTP write error: %m");
return rc;
}
@@ -322,29 +318,29 @@
va_start(ap, sig);
if ((ctx = va_arg(ap, lmtp2nntp_t *)) == NULL)
exit(ERR_EXECUTION);
- log0(ctx, TRACE, "catching and logging signals now");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "catching and logging signals now");
va_end(ap);
return;
}
if (ctx != NULL) {
switch (sig) {
case SIGCHLD:
- log1(ctx, NOTICE, "caught signal %d - wait for child", sig);
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "caught signal %d - wait for child", sig);
pid = wait(NULL);
ctx->active_childs--;
- log2(ctx, NOTICE, "caught signal %d - child [%ld] terminated", sig, (long)pid);
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "caught signal %d - child [%ld] terminated", sig, (long)pid);
return;
case SIGUSR1:
- log1(ctx, NOTICE, "caught signal %d - flush logging stream", sig);
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "caught signal %d - flush logging stream", sig);
l2_channel_flush(ctx->l2);
return;
case SIGHUP:
case SIGINT:
case SIGQUIT:
- log1(ctx, NOTICE, "caught signal %d - exit - no more logging", sig);
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "caught signal %d - exit - no more logging", sig);
break;
default:
- log1(ctx, PANIC, "CAUGHT SIGNAL %d - EXIT - NO MORE LOGGING", sig);
+ logbook(ctx->l2, L2_LEVEL_PANIC, "CAUGHT SIGNAL %d - EXIT - NO MORE LOGGING", sig);
}
l2_channel_destroy(ctx->l2);
l2_env_destroy(ctx->l2_env);
@@ -480,19 +476,19 @@
if ((ctx->option_pidfile != NULL) && ctx->option_killflag) {
if ((fd = fopen(ctx->option_pidfile, "r")) == NULL)
- log1(ctx, ERROR, "cannot open pidfile \"%s\" for reading %m", ctx->option_pidfile);
+ logbook(ctx->l2, L2_LEVEL_ERROR, "cannot open pidfile \"%s\" for reading %m", ctx->option_pidfile);
else {
if (fscanf(fd, "%d\n", &pid) != 1) {
fclose(fd);
- log1(ctx, ERROR, "cannot extract pid from pidfile \"%s\"", ctx->option_pidfile);
+ logbook(ctx->l2, L2_LEVEL_ERROR, "cannot extract pid from pidfile \"%s\"", ctx->option_pidfile);
}
else {
fclose(fd);
- log1(ctx, TRACE, "going to kill pid[%d]", pid);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "going to kill pid[%d]", pid);
if (kill(pid, SIGHUP) == -1)
- log1(ctx, ERROR, "killing pid[%d] failed %m", pid);
+ logbook(ctx->l2, L2_LEVEL_ERROR, "killing pid[%d] failed %m", pid);
if (unlink(ctx->option_pidfile) == -1)
- log1(ctx, ERROR, "unlinking pidfile \"%s\" failed %m", ctx->option_pidfile);
+ logbook(ctx->l2, L2_LEVEL_ERROR, "unlinking pidfile \"%s\" failed %m", ctx->option_pidfile);
}
}
CU(0);
@@ -520,7 +516,7 @@
lmtp_io.read = hook_lmtp_read;
lmtp_io.write = hook_lmtp_write;
if ((lmtp = lmtp_create(&lmtp_io)) == NULL) {
- log0(ctx, ERROR, "Unable to initialize LMTP library\n");
+ logbook(ctx->l2, L2_LEVEL_ERROR, "Unable to initialize LMTP library\n");
CU(ERR_EXECUTION);
}
/* RFC0821, 4.5.1. MINIMUM IMPLEMENTATION
@@ -553,11 +549,11 @@
pid = getpid();
if (ctx->option_daemon) {
daemonize();
- log1(ctx, NOTICE, "daemonized, previous pid[%d]", pid);
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "daemonized, previous pid[%d]", pid);
}
if (ctx->option_pidfile != NULL) {
if ((fd = fopen(ctx->option_pidfile, "w+")) == NULL)
- log1(ctx, ERROR, "cannot open pidfile \"%s\" for writing %m", ctx->option_pidfile);
+ logbook(ctx->l2, L2_LEVEL_ERROR, "cannot open pidfile \"%s\" for writing %m", ctx->option_pidfile);
else {
fprintf(fd, "%d\n", getpid());
fclose(fd);
@@ -570,15 +566,15 @@
sa_timeout(ctx->saServerbind, SA_TIMEOUT_WRITE, ctx->option_timeout_lmtp_write, 0);
while (1) {
while (ctx->active_childs >= ctx->option_childsmax) {
- log1(ctx, ERROR, "maximum number of childs (%d) reached - waiting (1s)", ctx->option_childsmax);
+ logbook(ctx->l2, L2_LEVEL_ERROR, "maximum number of childs (%d) reached - waiting (1s)", ctx->option_childsmax);
sleep(1);
}
if ((rc = sa_accept(ctx->saServerbind, &ctx->saaIO, &ctx->saIO)) != SA_OK) {
if (rc == SA_ERR_SYS)
- log3(ctx, ERROR, "accept failed: %s: (%d) %s", sa_error(rc), errno, strerror(errno));
+ logbook(ctx->l2, L2_LEVEL_ERROR, "accept failed: %s: (%d) %s", sa_error(rc), errno, strerror(errno));
else
- log1(ctx, ERROR, "accept failed: %s", sa_error(rc));
+ logbook(ctx->l2, L2_LEVEL_ERROR, "accept failed: %s", sa_error(rc));
sleep(10);
continue;
}
@@ -594,12 +590,12 @@
sa_addr_a2u(ctx->pacl[i].saa, &cpA1);
sa_addr_a2u(ctx->saaIO, &cpA2);
if (sa_addr_match(ctx->saaIO, ctx->pacl[i].saa, ctx->pacl[i].prefixlen) == SA_OK) {
- log4(ctx, TRACE, "positive/inclusive ACL \"%s\" (%s/%d) matches %s: YES (stop comparison)", ctx->pacl[i].acl, cpA1, ctx->pacl[i].prefixlen, cpA2);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "positive/inclusive ACL \"%s\" (%s/%d) matches %s: YES (stop comparison)", ctx->pacl[i].acl, cpA1, ctx->pacl[i].prefixlen, cpA2);
bOk = TRUE;
break;
}
else
- log4(ctx, TRACE, "positive/inclusive ACL \"%s\" (%s/%d) matches %s: NO", ctx->pacl[i].acl, cpA1, ctx->pacl[i].prefixlen, cpA2);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "positive/inclusive ACL \"%s\" (%s/%d) matches %s: NO", ctx->pacl[i].acl, cpA1, ctx->pacl[i].prefixlen, cpA2);
free(cpA1);
free(cpA2);
}
@@ -612,24 +608,24 @@
sa_addr_a2u(ctx->pacl[i].saa, &cpA1);
sa_addr_a2u(ctx->saaIO, &cpA2);
if (sa_addr_match(ctx->saaIO, ctx->pacl[i].saa, ctx->pacl[i].prefixlen) == SA_OK) {
- log4(ctx, TRACE, "negative/exclusive ACL \"%s\" (not %s/%d) matches %s: YES (stop comparison)", ctx->pacl[i].acl, cpA1, ctx->pacl[i].prefixlen, cpA2);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "negative/exclusive ACL \"%s\" (not %s/%d) matches %s: YES (stop comparison)", ctx->pacl[i].acl, cpA1, ctx->pacl[i].prefixlen, cpA2);
bOk = FALSE;
break;
}
else {
- log4(ctx, TRACE, "negative/exclusive ACL \"%s\" (not %s/%d) matches %s: NO", ctx->pacl[i].acl, cpA1, ctx->pacl[i].prefixlen, cpA2);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "negative/exclusive ACL \"%s\" (not %s/%d) matches %s: NO", ctx->pacl[i].acl, cpA1, ctx->pacl[i].prefixlen, cpA2);
}
}
if (bOk) {
char *cpA;
sa_addr_a2u(ctx->saaIO, &cpA);
- log1(ctx, TRACE, "connection from %s accepted due to ACL", cpA);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "connection from %s accepted due to ACL", cpA);
free(cpA);
}
else {
char *cpA;
sa_addr_a2u(ctx->saaIO, &cpA);
- log1(ctx, ERROR, "connection from %s refused due to ACL", cpA);
+ logbook(ctx->l2, L2_LEVEL_ERROR, "connection from %s refused due to ACL", cpA);
free(cpA);
sa_destroy(ctx->saIO);
sa_addr_destroy(ctx->saaIO);
@@ -641,17 +637,17 @@
l2_channel_flush(ctx->l2);
pid = fork();
if (pid == -1) {
- log0(ctx, ERROR, "daemon cannot spawn child %m");
+ logbook(ctx->l2, L2_LEVEL_ERROR, "daemon cannot spawn child %m");
continue;
}
if (pid != 0) {
- log1(ctx, INFO, "daemon forked process, new child pid[%d]", pid);
+ logbook(ctx->l2, L2_LEVEL_INFO, "daemon forked process, new child pid[%d]", pid);
ctx->active_childs++;
sa_destroy(ctx->saIO);
sa_addr_destroy(ctx->saaIO);
continue;
}
- log1(ctx, NOTICE, "startup new child process, parent pid[%d]", getppid());
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "startup new child process, parent pid[%d]", getppid());
/* child must close listening socket */
sa_destroy(ctx->saServerbind);
@@ -662,7 +658,7 @@
lmtp_io.read = hook_lmtp_read;
lmtp_io.write = hook_lmtp_write;
if ((lmtp = lmtp_create(&lmtp_io)) == NULL) {
- log0(ctx, ERROR, "Unable to initialize LMTP library\n");
+ logbook(ctx->l2, L2_LEVEL_ERROR, "Unable to initialize LMTP library\n");
CU(ERR_EXECUTION);
}
/* RFC0821, 4.5.1. MINIMUM IMPLEMENTATION
@@ -698,7 +694,7 @@
/* graceful shutdown */
CUS:
- log0(ctx, NOTICE, "graceful shutdown shortly before exit - no more logging");
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "graceful shutdown shortly before exit - no more logging");
//l2_channel_destroy(ctx->l2);
l2_env_destroy(ctx->l2_env);
if (ctx->saServerbind)
@@ -772,13 +768,13 @@
int i;
nntp_io_t nntp_io;
- log1(ctx, INFO, "LMTP service executing LHLO command < %s", req->msg);
+ logbook(ctx->l2, L2_LEVEL_INFO, "LMTP service executing LHLO command < %s", req->msg);
/* RFC0821 4.2.1. REPLY CODES BY FUNCTION GROUPS 503 Bad sequence of commands
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.0.0 Other undefined Status
*/
- log0(ctx, TRACE, "checking for duplicate LHLO");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking for duplicate LHLO");
if (ctx->session.lhlo_seen) {
res.statuscode = "503";
res.dsncode = "5.0.0";
@@ -790,7 +786,7 @@
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.0.0 Other undefined Status
*/
- log0(ctx, TRACE, "checking domain to match either RFC0821 or RFC1035 syntax");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking domain to match either RFC0821 or RFC1035 syntax");
if (! ( helo_rfc0821domain(req->msg, &ctx->session.lhlo_domain) > 0
|| helo_rfc1035domain(req->msg, &ctx->session.lhlo_domain) > 0)) {
res.statuscode = "501";
@@ -804,7 +800,7 @@
* RFC1893 3.5 Network and Routing Status X.3.5 System incorrectly configured
*/
if (ctx->option_operationmode != OPERATIONMODE_FAKE) {
- log0(ctx, TRACE, "check if at least one NNTP service was successfully configured");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "check if at least one NNTP service was successfully configured");
if (ctx->nns == 0) {
res.statuscode = "451";
res.dsncode = "4.3.5";
@@ -813,22 +809,22 @@
}
}
- log0(ctx, TRACE, "try to establish a session to any configured NNTP services");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "try to establish a session to any configured NNTP services");
if (ctx->option_operationmode == OPERATIONMODE_FAKE)
- log0(ctx, NOTICE, "NNTP running in fake mode, network connections will be executed but result is ignored");
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "NNTP running in fake mode, network connections will be executed but result is ignored");
i = 0;
do {
- log1(ctx, DEBUG, "trying ns[%d]", i);
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "trying ns[%d]", i);
bOk = TRUE;
- log1(ctx, TRACE, "try ${option.destination}[%d]", i); //FIXME
+ logbook(ctx->l2, L2_LEVEL_TRACE, "try ${option.destination}[%d]", i); //FIXME
ctx->pns[i].l2 = ctx->l2;
if (bOk && (ctx->saaClientbind != NULL)) {
- log0(ctx, DEBUG, "bind local socket to ${option.clientbind}"); //FIXME
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "bind local socket to ${option.clientbind}"); //FIXME
if (sa_bind(ctx->pns[i].sa, ctx->saaClientbind) != SA_OK) {
bOk = FALSE;
- log0(ctx, ERROR, "binding NNTP client to local address ${option.clientbind} failed, %m"); //FIXME
+ logbook(ctx->l2, L2_LEVEL_ERROR, "binding NNTP client to local address ${option.clientbind} failed, %m"); //FIXME
}
}
@@ -838,39 +834,39 @@
sa_timeout(ctx->pns[i].sa, SA_TIMEOUT_WRITE, ctx->option_timeout_nntp_read, 0);
if (bOk) {
- log0(ctx, DEBUG, "connect");
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "connect");
if (sa_connect(ctx->pns[i].sa, ctx->pns[i].saa) != SA_OK) {
bOk = FALSE;
- log1(ctx, WARNING, "connect to ${option.destination}[%d] failed, %m", i); //FIXME
+ logbook(ctx->l2, L2_LEVEL_WARNING, "connect to ${option.destination}[%d] failed, %m", i); //FIXME
}
}
if (bOk) {
- log0(ctx, DEBUG, "nntp_create");
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "nntp_create");
nntp_io.ctx = &ctx->pns[i];
nntp_io.read = hook_nntp_read;
nntp_io.write = hook_nntp_write;
if ((ctx->pns[i].nntp = nntp_create(&nntp_io)) == NULL) {
bOk = FALSE;
- log0(ctx, ERROR, "creation of NNTP context failed");
+ logbook(ctx->l2, L2_LEVEL_ERROR, "creation of NNTP context failed");
}
}
if (bOk) {
- log0(ctx, DEBUG, "nntp_init");
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "nntp_init");
if ((rc = nntp_init(ctx->pns[i].nntp)) != NNTP_OK) {
bOk = FALSE;
- log2(ctx, ERROR, "initialization of NNTP context failed, (%d) %s", rc, nntp_error(rc));
+ logbook(ctx->l2, L2_LEVEL_ERROR, "initialization of NNTP context failed, (%d) %s", rc, nntp_error(rc));
}
}
if (bOk) {
- log1(ctx, INFO, "NNTP session to ${option.destination}[%d] successfully established", i); //FIXME
+ logbook(ctx->l2, L2_LEVEL_INFO, "NNTP session to ${option.destination}[%d] successfully established", i); //FIXME
i++;
}
else {
- log1(ctx, WARNING, "NNTP session establishment to ${option.destination}[%d] failed", i); //FIXME
- log1(ctx, DEBUG, "FIXME-CURRENTLY-NOT removing ns[%d] from list", i);
+ logbook(ctx->l2, L2_LEVEL_WARNING, "NNTP session establishment to ${option.destination}[%d] failed", i); //FIXME
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "FIXME-CURRENTLY-NOT removing ns[%d] from list", i);
lmtp_gfs_ns(&ctx->pns[i]);
/*FIXME #1 this code is a leftover from the static ns array with nsc counter
FIXME #2 this code removes the newsservice forever!? What is the scope, what should the scope be - gateway, child process, session, posting lifetime? What is the intention of the user?
@@ -883,16 +879,16 @@
} while (i < ctx->nns);
if (ctx->option_operationmode == OPERATIONMODE_FAKE)
- log1(ctx, NOTICE, "NNTP running in fake mode, network connections successfully established=%d but ignored", ctx->nns);
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "NNTP running in fake mode, network connections successfully established=%d but ignored", ctx->nns);
else
{
/* RFC0821 4.2.1. REPLY CODES BY FUNCTION GROUPS 421 <domain> Service not available
* RFC1893 2. Status Codes 4.X.X Persistent Transient Failure
* RFC1893 3.5 Network and Routing Status X.4.1 No answer from host
*/
- log0(ctx, DEBUG, "check if at least one NNTP session successfully established");
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "check if at least one NNTP session successfully established");
if (ctx->nns == 0) {
- log0(ctx, ERROR, "no NNTP session established");
+ logbook(ctx->l2, L2_LEVEL_ERROR, "no NNTP session established");
res.statuscode = "421";
res.dsncode = "4.4.1";
res.statusmsg = "No NNTP session established.";
@@ -942,7 +938,7 @@
{
int i;
- log0(ctx, TRACE, "LMTP service LHLO command - graceful shutdown");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "LMTP service LHLO command - graceful shutdown");
for (i = 0; i < ctx->nns; i++)
lmtp_gfs_ns(&ctx->pns[i]);
@@ -1079,13 +1075,13 @@
lmtp_rc_t rc;
lmtp_res_t res;
- log1(ctx, INFO, "LMTP service executing MAIL command < %s", req->msg);
+ logbook(ctx->l2, L2_LEVEL_INFO, "LMTP service executing MAIL command < %s", req->msg);
/* RFC0821 4.2.1. REPLY CODES BY FUNCTION GROUPS 553 Requested action not taken: mailbox name not allowed
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.1.8 Bad sender's system address
*/
- log0(ctx, TRACE, "checking for previous LHLO");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking for previous LHLO");
if (!ctx->session.lhlo_seen) {
res.statuscode = "553";
res.dsncode = "5.1.8";
@@ -1097,7 +1093,7 @@
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.5.0 Other or undefined protocol status
*/
- log0(ctx, TRACE, "checking for previous MAIL");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking for previous MAIL");
if (ctx->msg != NULL) {
res.statuscode = "503";
res.dsncode = "5.5.0";
@@ -1109,7 +1105,7 @@
* RFC1893 2. Status Codes 4.X.X Persistent Transient Failure
* RFC1893 3.5 Network and Routing Status X.3.1 Mail system full
*/
- log0(ctx, TRACE, "msg_create");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "msg_create");
if ((ctx->msg = msg_create()) == NULL) {
res.statuscode = "452";
res.dsncode = "4.3.1";
@@ -1135,7 +1131,7 @@
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.1.7 Bad sender's mailbox address syntax
*/
- log0(ctx, TRACE, "checking if sender address is a domain name");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking if sender address is a domain name");
if (str_parse(req->msg, "m/^MAIL From:\\s*<(?:.+@.+)>/i") <= 0) {
res.statuscode = "553";
res.dsncode = "5.1.7";
@@ -1146,7 +1142,7 @@
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.5.4 Invalid command arguments
*/
- log0(ctx, TRACE, "checking BODY keyword");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking BODY keyword");
if (str_parse(req->msg, "m/^MAIL From:\\s*<(.+@.+)>"
"(?:\\s+BODY=(?:7BIT|8BITMIME)\\s*)?$/i",
&ctx->msg->mail_from) <= 0) {
@@ -1160,9 +1156,9 @@
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.7.1 Delivery not authorized, message refused
*/
- log0(ctx, TRACE, "checking if sender is allowed");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking if sender is allowed");
if (ctx->option_mailfrom != NULL) {
- log2(ctx, TRACE, "\"%s\" matching against \"%s\"", ctx->msg->mail_from, ctx->option_mailfrom);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "\"%s\" matching against \"%s\"", ctx->msg->mail_from, ctx->option_mailfrom);
if (str_parse(ctx->msg->mail_from, ctx->option_mailfrom) <= 0) {
res.statuscode = "550";
res.dsncode = "5.7.1";
@@ -1198,13 +1194,13 @@
char *cp;
char *group;
- log1(ctx, INFO, "LMTP service executing RCPT command < %s", req->msg);
+ logbook(ctx->l2, L2_LEVEL_INFO, "LMTP service executing RCPT command < %s", req->msg);
/* RFC0821 4.2.1. REPLY CODES BY FUNCTION GROUPS 503 Bad sequence of commands
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.5.0 Other or undefined protocol status
*/
- log0(ctx, TRACE, "checking for previous MAIL");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking for previous MAIL");
if ((ctx->msg == NULL) || (ctx->msg->mail_from == NULL)) {
res.statuscode = "503";
res.dsncode = "5.5.0";
@@ -1216,7 +1212,7 @@
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.5.2 Syntax error
*/
- log0(ctx, TRACE, "checking parameter syntax");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking parameter syntax");
if (str_parse(req->msg, "m/^RCPT To:\\s*(.+)$/i", &cp) <= 0) {
res.statuscode = "501";
res.dsncode = "5.5.2";
@@ -1228,7 +1224,7 @@
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.1.1 Bad destination mailbox address
*/
- log0(ctx, TRACE, "checking for empty parameter");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking for empty parameter");
if ((cp == NULL) || (strlen(cp) == 0)) {
res.statuscode = "550";
res.dsncode = "5.1.1";
@@ -1246,26 +1242,26 @@
* RFC1893 3.5 Network and Routing Status X.1.1 Bad destination mailbox address
* X.7.2 Mailing list expansion prohibited
*/
- log1(ctx, DEBUG, "ctx->option_groupmode=%d", ctx->option_groupmode);
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "ctx->option_groupmode=%d", ctx->option_groupmode);
if (ctx->option_groupmode == GROUPMODE_ENVELOPE) {
- log0(ctx, TRACE, "groupmode=envelope; transform recipient into group");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "groupmode=envelope; transform recipient into group");
if (str_parse(cp, "m/^<(.+)?@[^@]+>$/i", &group) <= 0) {
res.statuscode = "550";
res.dsncode = "5.1.1";
res.statusmsg = "Recipient did not transform into group.";
CU(LMTP_OK);
}
- log1(ctx, TRACE, "groupmode=envelope; match group %s", group);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "groupmode=envelope; match group %s", group);
if (!groupmatch(ctx->azGroupargs, ctx->asGroupargs, group)) {
res.statuscode = "550";
res.dsncode = "5.7.2";
res.statusmsg = "unmatched Group.";
CU(LMTP_OK);
}
- log1(ctx, TRACE, "memorize group %s", group);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "memorize group %s", group);
argz_add(&ctx->msg->azEnvgroups, &ctx->msg->asEnvgroups, group);
}
- log1(ctx, TRACE, "memorize recipient %s", cp);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "memorize recipient %s", cp);
argz_add(&ctx->msg->azRcpt, &ctx->msg->asRcpt, cp);
/* RFC0821 4.2.1. REPLY CODES BY FUNCTION GROUPS 250 Requested mail action okay, completed
@@ -1312,13 +1308,13 @@
char *cpRestrictheader;
char *cpRestrictvalue;
- log1(ctx, INFO, "LMTP service executing DATA command < %s", req->msg);
+ logbook(ctx->l2, L2_LEVEL_INFO, "LMTP service executing DATA command < %s", req->msg);
/* RFC0821 4.2.1. REPLY CODES BY FUNCTION GROUPS 503 Bad sequence of commands
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.5.0 Other or undefined protocol status
*/
- log0(ctx, TRACE, "checking for previous RCPT");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking for previous RCPT");
if ((ctx->msg == NULL) || (argz_count(ctx->msg->azRcpt, ctx->msg->asRcpt) == 0)) {
res.statuscode = "503";
res.dsncode = "5.5.0";
@@ -1329,20 +1325,20 @@
/* RFC0821 4.2.1. REPLY CODES BY FUNCTION GROUPS 354 Start mail input; end with <CRLF>.<CRLF>
*/
- log0(ctx, TRACE, "tell remote to send message now");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "tell remote to send message now");
res.statuscode = "354";
res.dsncode = NULL; /* DSN not used for data */
res.statusmsg = "Enter mail, end with \".\" on a line by itself";
lmtp_response(lmtp, &res);
- log1(ctx, TRACE, "read message with maximum size to accept = %d", ctx->option_maxmessagesize);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "read message with maximum size to accept = %d", ctx->option_maxmessagesize);
rc = lmtp_readmsg(lmtp, &ctx->msg->cpMsg, ctx->option_maxmessagesize);
/* RFC0821 4.2.1. REPLY CODES BY FUNCTION GROUPS 552 Requested mail action aborted: exceeded storage allocation
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.2.3 Message length exceeds administrative limit.
*/
- log0(ctx, TRACE, "checking for excessive message size");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking for excessive message size");
if (rc == LMTP_ERR_OVERFLOW) {
str_format(errorstring, sizeof(errorstring), "Message length exceeds administrative limit. %s", lmtp_error(rc));
res.statuscode = "552";
@@ -1359,7 +1355,7 @@
* RFC1893 2. Status Codes 4.X.X Persistent Transient Failure
* RFC1893 3.5 Network and Routing Status X.3.2 System not accepting network messages
*/
- log0(ctx, TRACE, "checking for system error");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking for system error");
if (rc == LMTP_ERR_SYSTEM) {
str_format(errorstring, sizeof(errorstring), "System error reading message: %s", strerror(errno));
res.statuscode = "451";
@@ -1376,7 +1372,7 @@
* RFC1893 2. Status Codes 4.X.X Persistent Transient Failure
* RFC1893 3.5 Network and Routing Status X.3.2 System not accepting network messages
*/
- log0(ctx, TRACE, "checking for other error");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking for other error");
if(rc != LMTP_OK) {
str_format(errorstring, sizeof(errorstring), "Unknown error reading message: %s", lmtp_error(rc));
res.statuscode = "451";
@@ -1393,7 +1389,7 @@
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.6.5 Conversion Failed
*/
- log0(ctx, TRACE, "split message");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "split message");
if ((rc = msg_split(ctx->msg)) != MSG_OK) {
str_format(errorstring, sizeof(errorstring), "Error splitting message: %s", msg_error(rc));
res.statuscode = "554";
@@ -1474,7 +1470,7 @@
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.7.1 Delivery not authorized, message refused
*/
- log0(ctx, TRACE, "checking if restricted header causes reject");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "checking if restricted header causes reject");
if (ctx->option_restrictheader != NULL) {
bOk = FALSE;
cp = NULL;
@@ -1485,16 +1481,16 @@
cpRestrictvalue = cp;
str_format(errorstring, sizeof(errorstring), "%s %s", cpRestrictheader, cpRestrictvalue);
if (str_parse(errorstring, ctx->option_restrictheader) <= 0) {
- log2(ctx, TRACE, "\"%s\" matching against \"%s\" NO", errorstring, ctx->option_restrictheader);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "\"%s\" matching against \"%s\" NO", errorstring, ctx->option_restrictheader);
}
else {
- log2(ctx, TRACE, "\"%s\" matching against \"%s\": YES", errorstring, ctx->option_restrictheader);
+ logbook(ctx->l2, L2_LEVEL_TRACE, "\"%s\" matching against \"%s\": YES", errorstring, ctx->option_restrictheader);
bOk = TRUE;
break;
}
}
if (bOk) {
- log0(ctx, TRACE, "restricted header found");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "restricted header found");
rcpt = NULL;
while ((rcpt = argz_next(ctx->msg->azRcpt, ctx->msg->asRcpt, rcpt)) != NULL) {
res.statuscode = "550";
@@ -1507,7 +1503,7 @@
}
/* rewrite headers */
- log0(ctx, TRACE, "appying header rewrite rules");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "appying header rewrite rules");
msg_headermatrixbuildup(ctx->msg);
headerrewrite(ctx);
msg_headermatrixteardwn(ctx->msg);
@@ -1516,7 +1512,7 @@
* RFC1893 2. Status Codes 5.X.X Permanent Failure
* RFC1893 3.5 Network and Routing Status X.6.5 Conversion Failed
*/
- log0(ctx, TRACE, "join message");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "join message");
if ((rc = msg_join(ctx->msg)) != MSG_OK) {
str_format(errorstring, sizeof(errorstring), "Error joining message: %s", msg_error(rc));
res.statuscode = "554";
@@ -1529,7 +1525,7 @@
return LMTP_OK;
}
- log0(ctx, TRACE, "deliver message");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "deliver message");
bSuccess = NNTP_ERR_DELIVERY; /* assume a hard error for the worst case */
for (i = 0; i < ctx->nns; i++) {
switch (ctx->option_operationmode) {
@@ -1564,15 +1560,15 @@
switch (ctx->option_operationmodefakestatus[0]) {
case '5':
bSuccess = NNTP_ERR_UNKNOWN;
- log2(ctx, NOTICE, "%s %s", errorstring, "failed");
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "%s %s", errorstring, "failed");
break;
case '4':
bSuccess = NNTP_DEFER;
- log2(ctx, NOTICE, "%s %s", errorstring, "deferred");
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "%s %s", errorstring, "deferred");
break;
default:
bSuccess = NNTP_OK;
- log2(ctx, NOTICE, "%s %s", errorstring, "succeeded");
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "%s %s", errorstring, "succeeded");
break;
}
} else {
@@ -1582,11 +1578,11 @@
ctx->msg->cpMsgid,
strlen(ctx->msg->cpMsg));
if (bSuccess == NNTP_OK)
- log2(ctx, NOTICE, "%s %s", errorstring, "succeeded");
+ logbook(ctx->l2, L2_LEVEL_NOTICE, "%s %s", errorstring, "succeeded");
else if(bSuccess == NNTP_DEFER)
- log2(ctx, WARNING, "%s %s", errorstring, "deferred");
+ logbook(ctx->l2, L2_LEVEL_WARNING, "%s %s", errorstring, "deferred");
else
- log2(ctx, ERROR, "%s %s", errorstring, "failed");
+ logbook(ctx->l2, L2_LEVEL_ERROR, "%s %s", errorstring, "failed");
}
@@ -1601,7 +1597,7 @@
*/
rcpt = NULL;
while ((rcpt = argz_next(ctx->msg->azRcpt, ctx->msg->asRcpt, rcpt)) != NULL) {
- log1(ctx, DEBUG, "ctx->option_operationmode=%d", ctx->option_operationmode);
+ logbook(ctx->l2, L2_LEVEL_DEBUG, "ctx->option_operationmode=%d", ctx->option_operationmode);
if (ctx->option_operationmode == OPERATIONMODE_FAKE) {
res.statuscode = ctx->option_operationmodefakestatus;
res.dsncode = ctx->option_operationmodefakedsn;
@@ -1668,7 +1664,7 @@
lmtp_res_t res;
lmtp_rc_t rc = LMTP_OK;
- log1(ctx, INFO, "LMTP service executing NOOP command < %s", req->msg);
+ logbook(ctx->l2, L2_LEVEL_INFO, "LMTP service executing NOOP command < %s", req->msg);
/* RFC0821 4.2.1. REPLY CODES BY FUNCTION GROUPS 250 Requested mail action okay, completed
* RFC1893 2. Status Codes 2.X.X Success
@@ -1687,7 +1683,7 @@
lmtp_res_t res;
lmtp_rc_t rc = LMTP_OK;
- log1(ctx, INFO, "LMTP service executing RSET command < %s", req->msg);
+ logbook(ctx->l2, L2_LEVEL_INFO, "LMTP service executing RSET command < %s", req->msg);
lmtp_gfs_rset(ctx);
@@ -1704,7 +1700,7 @@
static void lmtp_gfs_rset(lmtp2nntp_t *ctx)
{
- log0(ctx, TRACE, "LMTP service RSET command - graceful shutdown");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "LMTP service RSET command - graceful shutdown");
if (ctx->msg != NULL) {
msg_destroy(ctx->msg);
@@ -1718,7 +1714,7 @@
lmtp_res_t res;
lmtp_rc_t rc = LMTP_EOF;
- log1(ctx, INFO, "LMTP service executing QUIT command < %s", req->msg);
+ logbook(ctx->l2, L2_LEVEL_INFO, "LMTP service executing QUIT command < %s", req->msg);
lmtp_gfs_quit(ctx);
@@ -1735,7 +1731,7 @@
static void lmtp_gfs_quit(lmtp2nntp_t *ctx)
{
- log0(ctx, TRACE, "LMTP service QUIT command - graceful shutdown");
+ logbook(ctx->l2, L2_LEVEL_TRACE, "LMTP service QUIT command - graceful shutdown");
lmtp_gfs_rset(ctx);
resetsession(&ctx->session);
|