irc.d: clean up and update FreeBSD rc script for easier configuration - 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 b26c0644c0b0badec69870e4b92da4e0b4225b31 /scm/geomyidae/commit/b26c0644c0b0badec69870e4b92da4e0b4225b31.gph bitreich.org 70
1parent 098b3ed375acbd86cba0dff419cd954160cb4a9e /scm/geomyidae/commit/098b3ed375acbd86cba0dff419cd954160cb4a9e.gph bitreich.org 70
hAuthor: Nico Sonack <nsonack@herrhotzenplotz.de> URL:mailto:nsonack@herrhotzenplotz.de bitreich.org 70
iDate: Fri, 5 Jul 2024 17:51:17 +0200 Err bitreich.org 70
i Err bitreich.org 70
irc.d: clean up and update FreeBSD rc script for easier configuration Err bitreich.org 70
i Err bitreich.org 70
iI was working on a Ports Makefile and looked for a rc script for Err bitreich.org 70
igeomyidae. The one distributed in the source tarball seemed very Err bitreich.org 70
iout-of-date and contained anti-patterns regarding the rc system in Err bitreich.org 70
iFreeBSD. Err bitreich.org 70
i Err bitreich.org 70
iBasically I went in and made it configurable through rc.conf which Err bitreich.org 70
iis the central place for FreeBSD's rc configuration. I also updated Err bitreich.org 70
ivariable names such that they align with the patterns of rc.subr. Err bitreich.org 70
i Err bitreich.org 70
iThe reason for the change is simple: you don't want to edit the Err bitreich.org 70
ifiles installed from ports/pkg because if you update they get Err bitreich.org 70
ioverwritten and all your configuration is lost. Err bitreich.org 70
i Err bitreich.org 70
iDocumentation for the configuration variables are in the comments Err bitreich.org 70
iin the rc script. Err bitreich.org 70
i Err bitreich.org 70
iI don't know if the TLS stuff works as I haven't configured it (and Err bitreich.org 70
idon't need it atm). Everything else works fine on a FreeBSD Err bitreich.org 70
i14.1-RELEASE-p2 amd64 box. Err bitreich.org 70
i Err bitreich.org 70
iSigned-off-by: Christoph Lohmann <20h@r-36.net> Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M rc.d/FreeBSD.rc.d | 116 +++++++++++++++++++------------ Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 72 insertions(+), 44 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/rc.d/FreeBSD.rc.d b/rc.d/FreeBSD.rc.d /scm/geomyidae/file/rc.d/FreeBSD.rc.d.gph bitreich.org 70
i@@ -1,61 +1,89 @@ Err bitreich.org 70
i #!/bin/sh Err bitreich.org 70
i Err bitreich.org 70
i # PROVIDE: geomyidae Err bitreich.org 70
i-# REQUIRE: DAEMON Err bitreich.org 70
i+# REQUIRE: NETWORKING SERVERS DAEMON Err bitreich.org 70
i # BEFORE: LOGIN Err bitreich.org 70
i # KEYWORD: shutdown Err bitreich.org 70
i- Err bitreich.org 70
i+# Err bitreich.org 70
i+# Add the following lines to /etc/rc.conf to enable this service Err bitreich.org 70
i+# Err bitreich.org 70
i+# geomyidae_enable (bool): Set to NO by default. Err bitreich.org 70
i+# Set to YES to enable geomyidae Err bitreich.org 70
i+# geomyidae_flags (string): Additional command line options to Err bitreich.org 70
i+# pass to geomyidae(8). Err bitreich.org 70
i+# geomyidae_user (string): Set to the user to run geomyidae as Err bitreich.org 70
i+# Default is "geomyidae" Err bitreich.org 70
i+# geomyidae_group (string): Set to the group to run geomyidae as Err bitreich.org 70
i+# Default is "geomyidae" Err bitreich.org 70
i+# geomyidae_htdocs (string): Directory to server files from Err bitreich.org 70
i+# Default is "/var/gopher" Err bitreich.org 70
i+# geomyidae_logfile (string): File to use as a logfile Err bitreich.org 70
i+# Default is "/var/log/gopherlog" Err bitreich.org 70
i+# geomyidae_bindhost (string): IP Address to bind to Err bitreich.org 70
i+# Default is all addresses Err bitreich.org 70
i+# geomyidae_port (int): Port to listen on Err bitreich.org 70
i+# Default is 70 Err bitreich.org 70
i+# geomyidae_sport (int): Port to display within base directory Err bitreich.org 70
i+# Default is 70 Err bitreich.org 70
i+# geomyidae_keyfile (string): Path to private key in case TLS support is desired Err bitreich.org 70
i+# Default is empty Err bitreich.org 70
i+# geomyidae_certfile (string): Path to public key in case TLS support is desired Err bitreich.org 70
i+# Default is empty Err bitreich.org 70
i+# Err bitreich.org 70
i+# NOTE: You need to install geomyidae setuid root:wheel for this Err bitreich.org 70
i+# to work when listening on priviledged ports. Err bitreich.org 70
i+# Err bitreich.org 70
i+# Create users and group accordingly, e.g.: Err bitreich.org 70
i+# Err bitreich.org 70
i+# # pw groupadd geomyidae -g 542 Err bitreich.org 70
i+# # pw useradd geomyidae -g geomyidae -u 542 -s /usr/sbin/nologin -d /nonexistent Err bitreich.org 70
i+# Err bitreich.org 70
i+# Create logfile, pidfile and htdocs: Err bitreich.org 70
i+# Err bitreich.org 70
i+# # mkdir /var/gopher Err bitreich.org 70
i+# # touch /var/run/geomyidae.pid Err bitreich.org 70
i+# # touch /var/log/gopherlog Err bitreich.org 70
i+# # chown geomyidae:geomyidae /var/gopher /var/run/geomyidae.pid /var/log/gopherlog Err bitreich.org 70
i Err bitreich.org 70
i . /etc/rc.subr Err bitreich.org 70
i Err bitreich.org 70
i name=geomyidae Err bitreich.org 70
i-rcvar=$name Err bitreich.org 70
i+rcvar=geomyidae_enable Err bitreich.org 70
i Err bitreich.org 70
i-command="/usr/local/bin/$name" Err bitreich.org 70
i+load_rc_config $name Err bitreich.org 70
i Err bitreich.org 70
i-geomyidae_enable=${geomyidae_enable:-"NO"} Err bitreich.org 70
i+: ${geomyidae_enable:="NO"} Err bitreich.org 70
i+: ${geomyidae_user:="geomyidae"} Err bitreich.org 70
i+: ${geomyidae_group:="geomyidae"} Err bitreich.org 70
i+: ${geomyidae_flags:=""} Err bitreich.org 70
i+: ${geomyidae_htdocs:="/var/gopher"} Err bitreich.org 70
i+: ${geomyidae_logfile:="/var/log/gopherlog"} Err bitreich.org 70
i+: ${geomyidae_bindhost:=""} Err bitreich.org 70
i+: ${geomyidae_host:="localhost"} Err bitreich.org 70
i+: ${geomyidae_port:="70"} Err bitreich.org 70
i+: ${geomyidae_sport:="70"} Err bitreich.org 70
i+: ${geomyidae_command:="/usr/local/bin/geomyidae"} Err bitreich.org 70
i+: ${geomyidae_certfile:=""} Err bitreich.org 70
i+: ${geomyidae_keyfile:=""} Err bitreich.org 70
i Err bitreich.org 70
i-##################################################### Err bitreich.org 70
i-# Geomyidae Options Section - "?" => geomyidae(8) # Err bitreich.org 70
i-# Uncomment & define options (defaults are shown) # Err bitreich.org 70
i-##################################################### Err bitreich.org 70
i-# Err bitreich.org 70
i-#LOGFILE="-l /var/log/gopherlog" Err bitreich.org 70
i-#LOGLEVEL="-v 7" Err bitreich.org 70
i-#HTDOCS="-b /var/gopher" Err bitreich.org 70
i-#PORT="-p 70" Err bitreich.org 70
i-#SPORT="-o 70" Err bitreich.org 70
i-#USR="-u $USER" Err bitreich.org 70
i-#GRP="-g $GROUP" Err bitreich.org 70
i-#HOST="-h localhost" Err bitreich.org 70
i-#IP="-i 127.0.0.1" Err bitreich.org 70
i- Err bitreich.org 70
i-###################################################### Err bitreich.org 70
i-# Next, add all DEFINED options to command_args= # Err bitreich.org 70
i-###################################################### Err bitreich.org 70
i-# Err bitreich.org 70
i-#command_args="$LOGFILE $LOGLEVEL $HTDOCS $PORT $SPORT $USR $GRP $HOST $IP" Err bitreich.org 70
i-#command_args="" Err bitreich.org 70
i+pidfile=/var/run/geomyidae.pid Err bitreich.org 70
i+procname="${geomyidae_command}" Err bitreich.org 70
i+command="/usr/sbin/daemon" Err bitreich.org 70
i+command_args="-S -T geomyidae -m 3 -f -p ${pidfile} ${geomyidae_command} -d -l ${geomyidae_logfile} \ Err bitreich.org 70
i+ -b ${geomyidae_htdocs} -p ${geomyidae_port} -o ${geomyidae_sport} \ Err bitreich.org 70
i+ -u ${geomyidae_user} -g ${geomyidae_group} -h ${geomyidae_host}" Err bitreich.org 70
i Err bitreich.org 70
i+# Append bindhost if set Err bitreich.org 70
i+[ ! -z "${geomyidae_bindhost}" ] && command_args="${command_args} -i ${geomyidae_bindhost}" Err bitreich.org 70
i Err bitreich.org 70
i-###################################################### Err bitreich.org 70
i-# Uncomment this section if a PID file is desired # Err bitreich.org 70
i-###################################################### Err bitreich.org 70
i+# TLS setup Err bitreich.org 70
i+[ ! -z "${geomyidae_keyfile}" -a ! -z "${geomyidae_certfile}" ] && \ Err bitreich.org 70
i+ command_args="${command_args} -t ${geomyidae_keyfile} ${geomyidae_certfile}" Err bitreich.org 70
i Err bitreich.org 70
i-#pidfile="/var/run/${name}.pid" Err bitreich.org 70
i-#start_cmd="geomyidae_start" Err bitreich.org 70
i-# Err bitreich.org 70
i-#geomyidae_start() Err bitreich.org 70
i-#{ Err bitreich.org 70
i-# echo "Starting $name" Err bitreich.org 70
i-# $command $command_args Err bitreich.org 70
i-# pgrep -n $name > $pidfile Err bitreich.org 70
i-#} Err bitreich.org 70
i- Err bitreich.org 70
i-###################################################### Err bitreich.org 70
i-# Lastly, add the following to /etc/rc.conf: # Err bitreich.org 70
i-# "geomyidae=YES" (without the quotes) # Err bitreich.org 70
i-###################################################### Err bitreich.org 70
i+# Lastly append flags by user Err bitreich.org 70
i+command_args="${command_args} ${geomyidae_flags}" Err bitreich.org 70
i+ Err bitreich.org 70
i+required_files="${pidfile} ${geomyidae_logfile}" Err bitreich.org 70
i+required_dirs="${geomyidae_htdocs}" Err bitreich.org 70
i Err bitreich.org 70
i-load_rc_config $name Err bitreich.org 70
i run_rc_command "$1" Err bitreich.org 70
.
Response:
text/plain