iAdd syslog facility. - geomyidae - A small C-based gopherd. Err bitreich.org 70 hgit clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ URL:git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ bitreich.org 70 1Log /scm/geomyidae/log.gph bitreich.org 70 1Files /scm/geomyidae/files.gph bitreich.org 70 1Refs /scm/geomyidae/refs.gph bitreich.org 70 1Tags /scm/geomyidae/tag bitreich.org 70 1README /scm/geomyidae/file/README.gph bitreich.org 70 1LICENSE /scm/geomyidae/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 147e063355b1560f40584b7ddb11f8831e350753 /scm/geomyidae/commit/147e063355b1560f40584b7ddb11f8831e350753.gph bitreich.org 70 1parent 1c649c8667e849d887d2946f7666fd60752a2570 /scm/geomyidae/commit/1c649c8667e849d887d2946f7666fd60752a2570.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Wed, 17 Mar 2021 22:06:01 +0100 Err bitreich.org 70 i Err bitreich.org 70 iAdd syslog facility. Err bitreich.org 70 i Err bitreich.org 70 iThanks to escapeinsert for proposing this! Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M geomyidae.8 | 9 +++++++-- Err bitreich.org 70 i M main.c | 46 +++++++++++++++++++++---------- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 39 insertions(+), 16 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/geomyidae.8 b/geomyidae.8 /scm/geomyidae/file/geomyidae.8.gph bitreich.org 70 i@@ -1,6 +1,6 @@ Err bitreich.org 70 i .\" geomyidae.8 handcrafted in GNU groff -mdoc using nvi Err bitreich.org 70 i .\" Err bitreich.org 70 i-.Dd February 23, 2020 Err bitreich.org 70 i+.Dd March 17, 2021 Err bitreich.org 70 i .Dt GEOMYIDAE 8 Err bitreich.org 70 i .Os Err bitreich.org 70 i . Err bitreich.org 70 i@@ -17,6 +17,7 @@ Err bitreich.org 70 i .Op Fl d Err bitreich.org 70 i .Op Fl e Err bitreich.org 70 i .Op Fl n Err bitreich.org 70 i+.Op Fl s Err bitreich.org 70 i .Op Fl l Ar logfile Err bitreich.org 70 i .Op Fl v Ar loglevel Err bitreich.org 70 i .Op Fl b Ar base Err bitreich.org 70 i@@ -79,7 +80,8 @@ values if set. See Err bitreich.org 70 i .Ic OPTIONS Err bitreich.org 70 i below for specifics. Launching geomyidae automatically is best done via a UNIX Err bitreich.org 70 i run-time (rc.d) script; several sample rc.d scripts are included in the geomyidae Err bitreich.org 70 i-source archive. Err bitreich.org 70 i+source archive. Logging in geomyidae can be done through either logfiles Err bitreich.org 70 i+or syslog. Err bitreich.org 70 i . Err bitreich.org 70 i .Sh OPTIONS Err bitreich.org 70 i geomyidae options and default settings: Err bitreich.org 70 i@@ -108,6 +110,9 @@ Disable execution of any CGI or DCGI script. Err bitreich.org 70 i .It Fl n Err bitreich.org 70 i Don't perform reverse lookups. Err bitreich.org 70 i . Err bitreich.org 70 i+.It Fl s Err bitreich.org 70 i+Log using syslog for logging. Err bitreich.org 70 i+. Err bitreich.org 70 i .It Fl l Ar logfile Err bitreich.org 70 i Specify file where log output is written (no default). Err bitreich.org 70 i . Err bitreich.org 70 1diff --git a/main.c b/main.c /scm/geomyidae/file/main.c.gph bitreich.org 70 i@@ -26,6 +26,7 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i+#include Err bitreich.org 70 i Err bitreich.org 70 i #ifdef ENABLE_TLS Err bitreich.org 70 i #include Err bitreich.org 70 i@@ -46,12 +47,14 @@ enum { Err bitreich.org 70 i }; Err bitreich.org 70 i Err bitreich.org 70 i int glfd = -1; Err bitreich.org 70 i+int dosyslog = 0; Err bitreich.org 70 i int loglvl = 47; Err bitreich.org 70 i-int *listfds = NULL; Err bitreich.org 70 i-int nlistfds = 0; Err bitreich.org 70 i int revlookup = 1; Err bitreich.org 70 i char *logfile = NULL; Err bitreich.org 70 i Err bitreich.org 70 i+int *listfds = NULL; Err bitreich.org 70 i+int nlistfds = 0; Err bitreich.org 70 i+ Err bitreich.org 70 i char *argv0; Err bitreich.org 70 i char stdbase[] = "/var/gopher"; Err bitreich.org 70 i char *stdport = "70"; Err bitreich.org 70 i@@ -104,15 +107,17 @@ logentry(char *host, char *port, char *qry, char *status) Err bitreich.org 70 i struct tm *ptr; Err bitreich.org 70 i char timstr[128], *ahost; Err bitreich.org 70 i Err bitreich.org 70 i- if (glfd >= 0) { Err bitreich.org 70 i- tim = time(0); Err bitreich.org 70 i- ptr = gmtime(&tim); Err bitreich.org 70 i- Err bitreich.org 70 i+ if (glfd >= 0 || dosyslog) { Err bitreich.org 70 i ahost = revlookup ? reverselookup(host) : host; Err bitreich.org 70 i- strftime(timstr, sizeof(timstr), "%F %T %z", ptr); Err bitreich.org 70 i- Err bitreich.org 70 i- dprintf(glfd, "[%s|%s|%s|%s] %s\n", Err bitreich.org 70 i- timstr, ahost, port, status, qry); Err bitreich.org 70 i+ if (dosyslog) { Err bitreich.org 70 i+ syslog("[%s|%s|%s] %s\n", ahost, port, status, qry); Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ tim = time(0); Err bitreich.org 70 i+ ptr = gmtime(&tim); Err bitreich.org 70 i+ strftime(timstr, sizeof(timstr), "%F %T %z", ptr); Err bitreich.org 70 i+ dprintf(glfd, "[%s|%s|%s|%s] %s\n", Err bitreich.org 70 i+ timstr, ahost, port, status, qry); Err bitreich.org 70 i+ } Err bitreich.org 70 i if (revlookup) Err bitreich.org 70 i free(ahost); Err bitreich.org 70 i } Err bitreich.org 70 i@@ -284,7 +289,9 @@ sighandler(int sig) Err bitreich.org 70 i case SIGABRT: Err bitreich.org 70 i case SIGTERM: Err bitreich.org 70 i case SIGKILL: Err bitreich.org 70 i- if (logfile != NULL && glfd != -1) { Err bitreich.org 70 i+ if (dosyslog) { Err bitreich.org 70 i+ closelog(); Err bitreich.org 70 i+ } else if (logfile != NULL && glfd != -1) { Err bitreich.org 70 i close(glfd); Err bitreich.org 70 i glfd = -1; Err bitreich.org 70 i } Err bitreich.org 70 i@@ -402,7 +409,7 @@ getlistenfd(struct addrinfo *hints, char *bindip, char *port, int *rlfdnum) Err bitreich.org 70 i void Err bitreich.org 70 i usage(void) Err bitreich.org 70 i { Err bitreich.org 70 i- dprintf(2, "usage: %s [-46cden] [-l logfile] " Err bitreich.org 70 i+ dprintf(2, "usage: %s [-46cdens] [-l logfile] " Err bitreich.org 70 i #ifdef ENABLE_TLS Err bitreich.org 70 i "[-t keyfile certfile] " Err bitreich.org 70 i #endif /* ENABLE_TLS */ Err bitreich.org 70 i@@ -490,6 +497,9 @@ main(int argc, char *argv[]) Err bitreich.org 70 i if (sport == NULL) Err bitreich.org 70 i sport = port; Err bitreich.org 70 i break; Err bitreich.org 70 i+ case 's': Err bitreich.org 70 i+ dosyslog = 1; Err bitreich.org 70 i+ break; Err bitreich.org 70 i #ifdef ENABLE_TLS Err bitreich.org 70 i case 't': Err bitreich.org 70 i dotls = 1; Err bitreich.org 70 i@@ -590,7 +600,13 @@ main(int argc, char *argv[]) Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- if (logfile != NULL) { Err bitreich.org 70 i+ if (dosyslog) { Err bitreich.org 70 i+ if (!dofork) { Err bitreich.org 70 i+ openlog("geomyidae", LOG_CONS|LOG_PERROR, LOG_DAEMON|LOG_INFO); Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ openlog("geomyidae", LOG_NDELAY|LOG_PID, LOG_DAEMON|LOG_INFO); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ } else if (logfile != NULL) { Err bitreich.org 70 i glfd = open(logfile, O_APPEND | O_WRONLY | O_CREAT, 0644); Err bitreich.org 70 i if (glfd < 0) { Err bitreich.org 70 i perror("log"); Err bitreich.org 70 i@@ -906,7 +922,9 @@ main(int argc, char *argv[]) Err bitreich.org 70 i close(sock); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- if (logfile != NULL && glfd != -1) { Err bitreich.org 70 i+ if (dosyslog) { Err bitreich.org 70 i+ closelog(); Err bitreich.org 70 i+ } else if (logfile != NULL && glfd != -1) { Err bitreich.org 70 i close(glfd); Err bitreich.org 70 i glfd = -1; Err bitreich.org 70 i } Err bitreich.org 70 .