iAdd special sticky bit case for the base dir. - 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 fdd8c5b2210b2c3719bce020dfec54bbe36adb49 /scm/geomyidae/commit/fdd8c5b2210b2c3719bce020dfec54bbe36adb49.gph bitreich.org 70 1parent 8d1047f9e55a6210bdee47aecde5728c0ae12c60 /scm/geomyidae/commit/8d1047f9e55a6210bdee47aecde5728c0ae12c60.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Sun, 3 Apr 2022 09:49:55 +0200 Err bitreich.org 70 i Err bitreich.org 70 iAdd special sticky bit case for the base dir. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M geomyidae.8 | 5 ++++- Err bitreich.org 70 i M main.c | 13 +++++++++++++ Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 17 insertions(+), 1 deletion(-) 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@@ -530,7 +530,10 @@ ex. Err bitreich.org 70 i . Err bitreich.org 70 i .Sh ENCRYPTION ONLY Err bitreich.org 70 i If you set the sticky bit (chmod +t) on some file or directory, geomyidae Err bitreich.org 70 i-will only serve it over an encrypted connection. Err bitreich.org 70 i+will only serve it over an encrypted connection. There is the special Err bitreich.org 70 i+case, that when the sticky bit is set on the Err bitreich.org 70 i+.Ar base Err bitreich.org 70 i+directory, all content will only be served over tls. Err bitreich.org 70 i . Err bitreich.org 70 i .Sh FILES Err bitreich.org 70 i README, LICENSE, CGI, index.gph, rc.d/, LINKS, gph/ Err bitreich.org 70 1diff --git a/main.c b/main.c /scm/geomyidae/file/main.c.gph bitreich.org 70 i@@ -142,6 +142,19 @@ handlerequest(int sock, char *req, int rlen, char *base, char *ohost, Err bitreich.org 70 i int len = 0, fd, i, maxrecv; Err bitreich.org 70 i filetype *type; Err bitreich.org 70 i Err bitreich.org 70 i+ if (!istls) { Err bitreich.org 70 i+ if (stat(base, &dir) == -1) Err bitreich.org 70 i+ return; Err bitreich.org 70 i+ if (dir.st_mode & S_ISVTX) { Err bitreich.org 70 i+ dprintf(sock, tlserr, recvc); Err bitreich.org 70 i+ if (loglvl & ERRORS) { Err bitreich.org 70 i+ logentry(clienth, clientp, recvc, Err bitreich.org 70 i+ "encryption only"); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ return; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i memset(&dir, 0, sizeof(dir)); Err bitreich.org 70 i memset(recvb, 0, sizeof(recvb)); Err bitreich.org 70 i memset(recvc, 0, sizeof(recvc)); Err bitreich.org 70 .