Yes, I ended up successfully escaping the square brackets before. However, your suggestion makes me realize that my target of matching the whole daemon+daemon_flags set is probably unnecessary, all I need to match is the -s, which should be unique on the host.
Thanks! P.S. I looked at `setproctitle` a bit more and realized that it's really, _really_ un-portable so that's definitely not an option. On Sat, Apr 8, 2023, at 7:32 PM, Graham Percival wrote: > Hi Jared, > > Sorry if this seems like "too obvious" of a solution, but have you tried > escaping the square brackets with \ ? i.e. > > pexp="${daemon} -s \[127.0.0.1\] .*" > > or something like that? > > I'm not familiar with rc files, so it's possible that they use a different > character for escaping, but I'm certain they have that capability somehow. > > Cheers, > - Graham > > On Sat, Apr 08, 2023 at 03:22:25PM -0700, Jared Harper wrote: >> I have spiped running on two OpenBSD 7.2 hosts, installed via `pkg_add`, >> and it works great. >> >> The port's rc script for spiped, however, is only usable for a single >> instance because it sets `pexp="${daemon} .*"`[1], which will match >> every running instance of spiped. >> >> (For those unfamiliar with `pexp`, it is the regex used to identify a >> running process via `pgrep`. OpenBSD's rc system relies on this process >> matching method and does not support pid files.) >> >> I spent some time trying to configure the pexp to not be so greedy by >> using the default `${daemon} ${daemon_flags}`. This approach is >> unsuccessful due to the brackets surrounding the IP address (e.g., >> `[127.0.0.1]`) becoming a regex matching list. >> >> Some options I could use to workaround this limitation: >> >> 1) Use hostnames and no brackets; This apparently works but it limits >> usefulness. >> >> 2) Manually set `pexp`; This does work but requires that I remember to >> update it whenever the `daemon_flags` change. Also, across multiple >> processes this becomes borderline umaintainable. >> >> (Unfortunately, using the pidfile is a no-go because of how the rc >> subroutines use `pexp` in multiple places.) >> >> Since the primary author of spiped is a long-time contributor to >> FreeBSD, and FreeBSD supports pidfiles in their rc-system[2], I want to >> be clear I'm not saying that spiped does anything wrong, or that OpenBSD >> is doing something right. I just want to come up with a solution that I >> can contribute to the OpenBSD port so that we don't have to have this >> issue. >> >> A potential solution I can see would be to support `setproctitle(3)`[3] >> via a flag, such as `--name <name>`, which could result in a process >> title like `spiped: myname`. What's the appetite for this sort of >> change? >> >> However, since I'm new to a lot of these technologies, I'm fairly >> certain I've missed something obvious or easy (other than "switch to >> FreeBSD" ;). Do you have any other ideas? >> >> Thanks in advance. >> >> [1]: >> https://github.com/openbsd/ports/blob/master/security/spiped/pkg/spiped.rc#L9 >> [2]: https://man.freebsd.org/cgi/man.cgi?rc.subr(8) >> [3]: >> https://man.freebsd.org/cgi/man.cgi?query=setproctitle&sektion=3&format=html >> >> -jh -- -jh