Tracey Emery <tra...@traceyemery.net> writes: > On Thu, Jan 20, 2022 at 10:07:13AM +0100, Omar Polo wrote: >> Hello ports, >> >> Please find attached a diff to update net/gophernicus to the latest >> version. >> >> The changelog for 3.1.0 is quite interesting, as they added pledge(2) >> and unveil(2) support and changed the build system (among other things.) >> 3.1.1 is just some bugfixes on the build system. >> >> Unfortunately the pledge/unveil support is disabled by default and a few >> command line switches are needed to enable it: gophernicus uses shared >> memory and allows exec'ing arbitrary scripts from gophermaps, so one >> needs at least -nm and -nx to respectively disable them to run under >> pledge and unveil. -nu disables serving from users home directory and >> seems tightens it a bit more. That's why I've changed the pkg/README to >> suggest running with those flags. >> >> Some installed files (such as TODO) are not available anymore, and since >> I was there I've also removed INSTALL.md as I don't see any reason to >> install it too. >> >> This still keeps gophernicus installed as libexec/in.gophernicus to >> avoid breaking existing setups. >> >> As I've only tested it on localhost, some real world usage is much >> appreciated :) >> >> > > Do you think the pkg_readme could be improved by pointing users to rcctl > enable inetd and rcctl start/restart inetd? > > Just an idea. I'm not sure what we do for other ports that have these > kind of daemon requirements.
The only other port that uses inetd that comes to mind is net/vger and that points to rcctl enable/start inetd. It's questionable, but I agree on pointing users to rcctl. Here's an updated diff that tweaks pkg/README a bit more: - I've dropped the "setting up a gopher site" title. There's already a "running gophernicus on OpenBSD" and it felt redundant. - tweaked the paragraph regarding inetd to point the reader to rcctl(8) and show how enable and start inetd, loosely inspired from net/vger. I think it reads better now, but comments/critics are welcome. Regarding the update itself, I've found a small issue: there a couple of code path that ends up calling *printf with NULL instead of a string. Not a huge issue, just annoying to see log entries like: Jan 20 16:26:32 venera in.gophernicus: vfprintf %s NULL in "Error: %s %s\^M " for each not found file. (easy repro: printf 'foobar\r\n' | /usr/local/libexec/in.gophernicus -h localhost). grep gophernicus.c for `die' when the second argument is NULL. It's present in the master branch too, i'll report it upstream soon. It's worth to keep a local patch for that? Index: Makefile =================================================================== RCS file: /home/cvs/ports/net/gophernicus/Makefile,v retrieving revision 1.20 diff -u -p -r1.20 Makefile --- Makefile 13 Feb 2021 14:13:37 -0000 1.20 +++ Makefile 20 Jan 2022 15:14:32 -0000 @@ -1,11 +1,9 @@ # $OpenBSD: Makefile,v 1.20 2021/02/13 14:13:37 bcallah Exp $ COMMENT= modern gopher server -REVISION = 0 -GH_ACCOUNT= gophernicus -GH_PROJECT= gophernicus -GH_TAGNAME= v3.0.1 +V= 3.1.1 +DISTNAME= gophernicus-${V} CATEGORIES= net @@ -14,19 +12,26 @@ HOMEPAGE= gopher://gophernicus.org/ # BSD PERMIT_PACKAGE= Yes +# uses pledge +# uses unveil WANTLIB += c +MASTER_SITES= https://github.com/gophernicus/gophernicus/releases/download/${V}/ + +CONFIGURE_STYLE= simple +CONFIGURE_ARGS= --listener=inetd + MAKE_FLAGS= CC="${CC}" CFLAGS="${CFLAGS}" NO_TEST= Yes do-install: - ${INSTALL_PROGRAM} ${WRKSRC}/gophernicus ${PREFIX}/libexec/in.gophernicus + ${INSTALL_PROGRAM} ${WRKSRC}/src/gophernicus ${PREFIX}/libexec/in.gophernicus + ${INSTALL_MAN} ${WRKSRC}/gophernicus.8 ${PREFIX}/man/man8 ${INSTALL_DATA_DIR} ${PREFIX}/share/doc/gophernicus ${INSTALL_DATA_DIR} ${PREFIX}/share/examples/gophernicus - cd ${WRKSRC} && ${INSTALL_DATA} LICENSE README INSTALL.md \ - TODO README.Gophermap gophertag \ - ${PREFIX}/share/doc/gophernicus/ - cd ${WRKSRC} && ${INSTALL_DATA} gophermap \ - ${PREFIX}/share/examples/gophernicus/ + cd ${WRKSRC} && ${INSTALL_DATA} LICENSE README.md README.gophermap \ + gophertag ${PREFIX}/share/doc/gophernicus/ + ${INSTALL_DATA} ${WRKSRC}/gophermap.sample \ + ${PREFIX}/share/examples/gophernicus/gophermap .include <bsd.port.mk> Index: distinfo =================================================================== RCS file: /home/cvs/ports/net/gophernicus/distinfo,v retrieving revision 1.10 diff -u -p -r1.10 distinfo --- distinfo 6 Feb 2020 18:06:10 -0000 1.10 +++ distinfo 19 Jan 2022 21:43:34 -0000 @@ -1,2 +1,2 @@ -SHA256 (gophernicus-3.0.1.tar.gz) = Fl/SrU+wY430FHFJa7rGgiA6FdBdX3RhiFhYFyE4vJY= -SIZE (gophernicus-3.0.1.tar.gz) = 52525 +SHA256 (gophernicus-3.1.1.tar.gz) = p4ROSqLhry9C0Z5bM+vswcK0ehnUvVkeddKVdSVL97Q= +SIZE (gophernicus-3.1.1.tar.gz) = 55234 Index: patches/patch-gophernicus_c =================================================================== RCS file: patches/patch-gophernicus_c diff -N patches/patch-gophernicus_c --- patches/patch-gophernicus_c 13 Feb 2021 14:13:37 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,16 +0,0 @@ -$OpenBSD: patch-gophernicus_c,v 1.1 2021/02/13 14:13:37 bcallah Exp $ - -We don't have libwrap, and these cause issues with -fno-common - -Index: gophernicus.c ---- gophernicus.c.orig -+++ gophernicus.c -@@ -30,8 +30,6 @@ - * Libwrap needs these defined - */ - #ifdef HAVE_LIBWRAP --int allow_severity = LOG_DEBUG; --int deny_severity = LOG_ERR; - #endif - - Index: pkg/PLIST =================================================================== RCS file: /home/cvs/ports/net/gophernicus/pkg/PLIST,v retrieving revision 1.4 diff -u -p -r1.4 PLIST --- pkg/PLIST 6 Feb 2020 18:06:10 -0000 1.4 +++ pkg/PLIST 20 Jan 2022 09:38:57 -0000 @@ -2,12 +2,11 @@ @newgroup _gophernicus:704 @newuser _gophernicus:704:704:daemon:Gophernicus Gopher Server:/nonexistent:/sbin/nologin @bin libexec/in.gophernicus +@man man/man8/gophernicus.8 share/doc/gophernicus/ -share/doc/gophernicus/INSTALL.md share/doc/gophernicus/LICENSE -share/doc/gophernicus/README -share/doc/gophernicus/README.Gophermap -share/doc/gophernicus/TODO +share/doc/gophernicus/README.gophermap +share/doc/gophernicus/README.md share/doc/gophernicus/gophertag @mode 755 @owner root Index: pkg/README =================================================================== RCS file: /home/cvs/ports/net/gophernicus/pkg/README,v retrieving revision 1.5 diff -u -p -r1.5 README --- pkg/README 4 Sep 2018 12:46:17 -0000 1.5 +++ pkg/README 20 Jan 2022 15:18:33 -0000 @@ -4,23 +4,22 @@ $OpenBSD: README,v 1.5 2018/09/04 12:46: | Running ${PKGSTEM} on OpenBSD +----------------------------------------------------------------------- -Setting up a gopher site -======================== - After installing the gophernicus package, edit /etc/inetd.conf and add the following, all on one line: -gopher stream tcp nowait _gophernicus ${TRUEPREFIX}/libexec/in.gophernicus in.gophernicus -h "hostname" +gopher stream tcp nowait _gophernicus ${TRUEPREFIX}/libexec/in.gophernicus in.gophernicus -h "hostname" -nm -nu -nx Replace "hostname" with the system's hostname, this should be valid and resolvable as it is used to construct links. -inetd(8) must be reloaded (or started). To enable it at boot, the -following line needs to be added to rc.conf.local(8): -inetd_flags= +inetd(8) must then be enabled and started: + + # rcctl enable inetd + # rcctl start inetd By default Gophernicus serves documents from /var/gopher and will only serve files which are world-readable; being readable by the server process is not enough. -For more information, see ${TRUEPREFIX}/share/doc/gophernicus/README. +For more information, see gophernicus(8) and +${TRUEPREFIX}/share/doc/gophernicus/README.md.