iAdd -DENABLE_TLS feature for people not wanting TLS. - 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 c92aa18514694938b21439afff0b8d1ece617b18 /scm/geomyidae/commit/c92aa18514694938b21439afff0b8d1ece617b18.gph bitreich.org 70 1parent 0c2fa66d5056ca6cdd6cf69aa7feb416b21a3ff0 /scm/geomyidae/commit/0c2fa66d5056ca6cdd6cf69aa7feb416b21a3ff0.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Sun, 7 Jun 2020 22:29:26 +0200 Err bitreich.org 70 i Err bitreich.org 70 iAdd -DENABLE_TLS feature for people not wanting TLS. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M Makefile | 8 ++++++-- Err bitreich.org 70 i M main.c | 37 ++++++++++++++++++++++++++----- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 38 insertions(+), 7 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/Makefile b/Makefile /scm/geomyidae/file/Makefile.gph bitreich.org 70 i@@ -9,8 +9,12 @@ PREFIX = /usr/local Err bitreich.org 70 i BINDIR = ${PREFIX}/sbin Err bitreich.org 70 i MANDIR = ${PREFIX}/share/man/man8 Err bitreich.org 70 i Err bitreich.org 70 i-GEOM_CFLAGS = -D_DEFAULT_SOURCE -I. -I/usr/include ${CFLAGS} Err bitreich.org 70 i-GEOM_LDFLAGS = -L/usr/lib -L. -ltls ${LDFLAGS} Err bitreich.org 70 i+# Comment to disable TLS support Err bitreich.org 70 i+TLS_CFLAGS = -DENABLE_TLS Err bitreich.org 70 i+TLS_LDFLAGS = -ltls Err bitreich.org 70 i+ Err bitreich.org 70 i+GEOM_CFLAGS = -D_DEFAULT_SOURCE -I. -I/usr/include ${TLS_CFLAGS} ${CFLAGS} Err bitreich.org 70 i+GEOM_LDFLAGS = -L/usr/lib -L. ${TLS_LDFLAGS} ${LDFLAGS} Err bitreich.org 70 i Err bitreich.org 70 i SRC = main.c ind.c handlr.c Err bitreich.org 70 i OBJ = ${SRC:.c=.o} Err bitreich.org 70 1diff --git a/main.c b/main.c /scm/geomyidae/file/main.c.gph bitreich.org 70 i@@ -25,7 +25,10 @@ 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+#endif /* ENABLE_TLS */ Err bitreich.org 70 i Err bitreich.org 70 i #include "ind.h" Err bitreich.org 70 i #include "handlr.h" Err bitreich.org 70 i@@ -398,7 +401,9 @@ 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+#ifdef ENABLE_TLS Err bitreich.org 70 i "[-t keyfile certfile] " Err bitreich.org 70 i+#endif /* ENABLE_TLS */ Err bitreich.org 70 i "[-v loglvl] [-b base] [-p port] [-o sport] " Err bitreich.org 70 i "[-u user] [-g group] [-h host] [-i interface ...]\n", Err bitreich.org 70 i argv0); Err bitreich.org 70 i@@ -413,18 +418,27 @@ main(int argc, char *argv[]) Err bitreich.org 70 i socklen_t cltlen; Err bitreich.org 70 i int sock, dofork = 1, inetf = AF_UNSPEC, usechroot = 0, Err bitreich.org 70 i nocgi = 0, errno_save, nbindips = 0, i, j, Err bitreich.org 70 i- nlfdret, *lfdret, listfd, maxlfd, dotls = 0, istls = 0, Err bitreich.org 70 i- shuflen, wlen, shufpos, tlspipe[2], maxrecv, retl, Err bitreich.org 70 i+ nlfdret, *lfdret, listfd, maxlfd, istls = 0, Err bitreich.org 70 i+#ifdef ENABLE_TLS Err bitreich.org 70 i+ dotls = 0, tlspipe[2], shufbuf[1025], Err bitreich.org 70 i+ shuflen, wlen, shufpos, Err bitreich.org 70 i+#endif /* ENABLE_TLS */ Err bitreich.org 70 i+ maxrecv, retl, Err bitreich.org 70 i rlen = 0; Err bitreich.org 70 i fd_set rfd; Err bitreich.org 70 i char *port, *base, clienth[NI_MAXHOST], clientp[NI_MAXSERV], Err bitreich.org 70 i *user = NULL, *group = NULL, **bindips = NULL, Err bitreich.org 70 i- *ohost = NULL, *sport = NULL, *p, *certfile = NULL, Err bitreich.org 70 i- *keyfile = NULL, shufbuf[1025], byte0, recvb[1025]; Err bitreich.org 70 i+ *ohost = NULL, *sport = NULL, *p, Err bitreich.org 70 i+#ifdef ENABLE_TLS Err bitreich.org 70 i+ *certfile = NULL, *keyfile = NULL, Err bitreich.org 70 i+#endif /* ENABLE_TLS */ Err bitreich.org 70 i+ byte0, recvb[1025]; Err bitreich.org 70 i struct passwd *us = NULL; Err bitreich.org 70 i struct group *gr = NULL; Err bitreich.org 70 i+#ifdef ENABLE_TLS Err bitreich.org 70 i struct tls_config *tlsconfig = NULL; Err bitreich.org 70 i struct tls *tlsctx = NULL, *tlsclientctx; Err bitreich.org 70 i+#endif /* ENABLE_TLS */ Err bitreich.org 70 i Err bitreich.org 70 i base = stdbase; Err bitreich.org 70 i port = stdport; Err bitreich.org 70 i@@ -478,11 +492,13 @@ main(int argc, char *argv[]) Err bitreich.org 70 i case 'n': Err bitreich.org 70 i revlookup = 0; 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 keyfile = EARGF(usage()); Err bitreich.org 70 i certfile = EARGF(usage()); Err bitreich.org 70 i break; Err bitreich.org 70 i+#endif /* ENABLE_TLS */ Err bitreich.org 70 i default: Err bitreich.org 70 i usage(); Err bitreich.org 70 i } ARGEND; Err bitreich.org 70 i@@ -493,6 +509,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i if (argc != 0) Err bitreich.org 70 i usage(); Err bitreich.org 70 i Err bitreich.org 70 i+#ifdef ENABLE_TLS Err bitreich.org 70 i if (dotls) { Err bitreich.org 70 i if (tls_init() < 0) { Err bitreich.org 70 i perror("tls_init"); Err bitreich.org 70 i@@ -519,6 +536,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i return 1; Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i+#endif /* ENABLE_TLS */ Err bitreich.org 70 i Err bitreich.org 70 i if (ohost == NULL) { Err bitreich.org 70 i /* Do not use HOST_NAME_MAX, it is not defined on NetBSD. */ Err bitreich.org 70 i@@ -746,6 +764,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i if (recv(sock, &byte0, 1, MSG_PEEK) < 1) Err bitreich.org 70 i return 1; Err bitreich.org 70 i Err bitreich.org 70 i+#ifdef ENABLE_TLS Err bitreich.org 70 i /* Err bitreich.org 70 i * First byte is 0x16 == 22, which is the TLS Err bitreich.org 70 i * Handshake first byte. Err bitreich.org 70 i@@ -758,15 +777,19 @@ main(int argc, char *argv[]) Err bitreich.org 70 i if (tls_handshake(tlsclientctx) < 0) Err bitreich.org 70 i return 1; Err bitreich.org 70 i } Err bitreich.org 70 i+#endif /* ENABLE_TLS */ Err bitreich.org 70 i Err bitreich.org 70 i maxrecv = sizeof(recvb) - 1; Err bitreich.org 70 i do { Err bitreich.org 70 i+#ifdef ENABLE_TLS Err bitreich.org 70 i if (istls) { Err bitreich.org 70 i retl = tls_read(tlsclientctx, Err bitreich.org 70 i recvb+rlen, sizeof(recvb)-1-rlen); Err bitreich.org 70 i if (retl < 0) Err bitreich.org 70 i fprintf(stderr, "tls_read failed: %s\n", tls_error(tlsclientctx)); Err bitreich.org 70 i- } else { Err bitreich.org 70 i+ } else Err bitreich.org 70 i+#endif /* ENABLE_TLS */ Err bitreich.org 70 i+ { Err bitreich.org 70 i retl = read(sock, recvb+rlen, Err bitreich.org 70 i sizeof(recvb)-1-rlen); Err bitreich.org 70 i if (retl < 0) Err bitreich.org 70 i@@ -780,6 +803,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i if (rlen <= 0) Err bitreich.org 70 i return 1; Err bitreich.org 70 i Err bitreich.org 70 i+#ifdef ENABLE_TLS Err bitreich.org 70 i if (istls) { Err bitreich.org 70 i if (pipe(tlspipe) < 0) { Err bitreich.org 70 i perror("tls_pipe"); Err bitreich.org 70 i@@ -819,6 +843,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i+#endif /* ENABLE_TLS */ Err bitreich.org 70 i Err bitreich.org 70 i handlerequest(sock, recvb, rlen, base, Err bitreich.org 70 i ohost, sport, clienth, Err bitreich.org 70 i@@ -855,11 +880,13 @@ main(int argc, char *argv[]) Err bitreich.org 70 i } Err bitreich.org 70 i free(listfds); Err bitreich.org 70 i Err bitreich.org 70 i+#ifdef ENABLE_TLS Err bitreich.org 70 i if (dotls) { Err bitreich.org 70 i tls_close(tlsctx); Err bitreich.org 70 i tls_free(tlsctx); Err bitreich.org 70 i tls_config_free(tlsconfig); Err bitreich.org 70 i } Err bitreich.org 70 i+#endif /* ENABLE_TLS */ Err bitreich.org 70 i Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 .