commit 46bcc4ea95b03fe81ad361ee02bd021a7618e5a9 from: Omar Polo date: Wed Jul 26 08:10:12 2023 UTC add log syslog off; don't turn syslog off when log access is specified commit - cba01a868748013f838c28ad8005c8377160c76f commit + 46bcc4ea95b03fe81ad361ee02bd021a7618e5a9 blob - 753bb7267b7a86e0c7c8568d4f0cc2c0892f5a9e blob + 6b4accb6b4afa887a1560e3be29c8a28b622c449 --- config.c +++ config.c @@ -44,6 +44,7 @@ config_new(void) init_mime(&conf->mime); conf->prefork = 3; + conf->log_syslog = 1; #ifdef __OpenBSD__ conf->use_privsep_crypto = 1; @@ -148,6 +149,7 @@ config_purge(struct conf *conf) conf->ps = ps; conf->use_privsep_crypto = use_privsep_crypto; conf->protos = TLS_PROTOCOL_TLSv1_2 | TLS_PROTOCOL_TLSv1_3; + conf->log_syslog = 1; init_mime(&conf->mime); TAILQ_INIT(&conf->fcgi); TAILQ_INIT(&conf->hosts); blob - 472a3e061effc2afdf379b649add052c847737e6 blob + 8f0fd3772518670fde0e69fd2d14f271916eff53 --- gmid.c +++ gmid.c @@ -408,6 +408,9 @@ main_send_logfd(struct conf *conf) if (proc_compose_imsg(ps, PROC_LOGGER, -1, IMSG_LOG_ACCESS, -1, fd, NULL, 0) == -1) return -1; + if (proc_compose_imsg(ps, PROC_LOGGER, -1, IMSG_LOG_SYSLOG, -1, -1, + &conf->log_syslog, sizeof(conf->log_syslog)) == -1) + return -1; return 0; } blob - 58999ba28be31ff75d8b30d617c2dcf37e0ebb77 blob + ebbbc275ad1cb9979a4dd5498c946b62770ea957 --- gmid.conf.5 +++ gmid.conf.5 @@ -134,9 +134,11 @@ Specify logging options. Multiple options may be provided within curly braces. The available options are as follows: .Bl -tag -width Ds -.It Ic syslog +.It Ic syslog Op Ic off Log to syslog. -This is the default behaviour. +It is enabled by default, use the +.Ic off +argument to disable. .It Ic access Ar file Log the requests to .Ar file . blob - 8616099a0fab1f74423a11e75f88814b89c77053 blob + 16935cad5c0d0d07b1fcd0b004fcfc24ff4b7a97 --- gmid.h +++ gmid.h @@ -248,6 +248,7 @@ struct conf { char user[LOGIN_NAME_MAX]; int prefork; int reload; + int log_syslog; char *log_access; enum log_format log_format; int use_privsep_crypto; @@ -330,6 +331,7 @@ struct connreq { enum imsg_type { IMSG_LOG_REQUEST, IMSG_LOG_ACCESS, + IMSG_LOG_SYSLOG, IMSG_RECONF_START, IMSG_RECONF_MIME, blob - 4de68c01d8f6bc7f7ce2d464bc80def0e85b7067 blob + d0e25c9daab970a58ac13056b4a90ae85fc6f801 --- logger.c +++ logger.c @@ -38,6 +38,7 @@ #endif static int logfd = -1; +static int log_to_syslog = 1; static void logger_init(struct privsep *, struct privsep_proc *, void *); static void logger_shutdown(void); @@ -74,6 +75,11 @@ static int logger_dispatch_parent(int fd, struct privsep_proc *p, struct imsg *imsg) { switch (imsg->hdr.type) { + case IMSG_LOG_SYSLOG: + if (IMSG_DATA_SIZE(imsg) != sizeof(log_to_syslog)) + fatal("corrupted IMSG_LOG_SYSLOG"); + memcpy(&log_to_syslog, imsg->data, sizeof(log_to_syslog)); + break; case IMSG_LOG_ACCESS: if (logfd != -1) close(logfd); @@ -104,7 +110,7 @@ logger_dispatch_server(int fd, struct privsep_proc *p, msg[datalen - 1] = '\0'; if (logfd != -1) dprintf(logfd, "%s\n", msg); - else + if (log_to_syslog) syslog(LOG_DAEMON | LOG_NOTICE, "%s", msg); break; default: blob - 83d0858f36500ebdcf7b9bd1b1dc3415eeccea8f blob + a47f1f1789a9afdf97fa0db532984f67e2f7f191 --- parse.y +++ parse.y @@ -260,10 +260,12 @@ logopts : /* empty */ | logopts logopt optnl ; -logopt : SYSLOG { - free(conf->log_access); - conf->log_access = NULL; +logopt : SYSLOG OFF { + conf->log_syslog = 0; } + | SYSLOG { + conf->log_syslog = 1; + } | ACCESS string { free(conf->log_access); conf->log_access = $2;