Commit Graph

68 Commits

Author SHA1 Message Date
C. McEnroe
5b1a5f2876 Do not increment signals
No need to do a read and a write... and it's declared volatile so maybe
that's even worse? I don't even know, but there's no point.
2020-10-27 08:36:25 -04:00
C. McEnroe
363ab9f834 Only look up group if one is named 2020-10-23 11:37:10 -04:00
C. McEnroe
87083ad381 Remove default defines of RUNDIR, ETCDIR 2020-10-23 11:22:17 -04:00
C. McEnroe
8f81318a3f Set shell scripts executable in build 2020-10-23 11:14:02 -04:00
C. McEnroe
d90a43d948 Humanize milliseconds if interval is less than 1s
The intervals are configurable in milliseconds so humanize should be
able to display at that precision.
2020-10-20 20:56:06 -04:00
C. McEnroe
1832301862 Humanize restart interval 2020-10-20 19:56:56 -04:00
C. McEnroe
324f569ce0 Document default catsit.conf location on OpenBSD 2020-08-17 23:59:08 -04:00
C. McEnroe
08783bd1cc Template catsit script with RUNDIR 2020-08-17 23:25:34 -04:00
C. McEnroe
2a7467647e Clean up includes 2020-08-17 22:49:29 -04:00
C. McEnroe
e548219ebf Log service uptime in status 2020-08-17 22:39:54 -04:00
C. McEnroe
533c95c321 Add copy of AGPLv3 2020-08-17 22:20:53 -04:00
C. McEnroe
9612da73e9 Document target platforms
I really want to avoid adding a README...
2020-08-17 18:22:42 -04:00
C. McEnroe
6f74d88067 Remove useless setprogname call 2020-08-17 18:17:41 -04:00
C. McEnroe
325a92645f Add OpenBSD rc script 2020-08-17 17:50:00 -04:00
C. McEnroe
32d048f326 Use BSD make syntax to configure for OpenBSD 2020-08-17 17:22:00 -04:00
C. McEnroe
296e40887b Use pledge(2) and unveil(2) on OpenBSD 2020-08-17 16:38:22 -04:00
C. McEnroe
ebd44fb606 Use a separate fd for the fake fifo writer
From OpenBSD open(2):

> A FIFO should either be opened with O_RDONLY or with O_WRONLY.  The
> behavior for opening a FIFO with O_RDWR is undefined.
2020-08-17 16:21:34 -04:00
C. McEnroe
ea96ef48cb Use a non-blocking lock on the PID file 2020-08-17 16:06:40 -04:00
C. McEnroe
620735523f Truncate PID file after opening and locking 2020-08-17 15:59:45 -04:00
C. McEnroe
00e35a1031 Simplify parseConfig error handling 2020-08-17 15:49:19 -04:00
C. McEnroe
41f9a167e3 Properly handle command line truncation
Unlikely to happen since ARG_MAX is 256K, but...
2020-08-17 12:57:50 -04:00
C. McEnroe
84b2c1858a Flesh out documentation and improve examples 2020-08-17 01:11:44 -04:00
C. McEnroe
6302579f22 Add drop command 2020-08-16 23:01:25 -04:00
C. McEnroe
f9cfab1e0d Only call setgroups as root
setgroups fails when already running as a user.
2020-08-16 22:20:14 -04:00
C. McEnroe
daac7db044 Don't set LOGNAME
LOGNAME is a SysV thing. This is a BSD program.
2020-08-16 17:32:23 -04:00
C. McEnroe
7d04a0f5e0 Add privileged services
This allows running things like kfcgi which do their own privilege
dropping and chrooting. Need to update the examples with something like
that.
2020-08-16 17:28:57 -04:00
C. McEnroe
e381f7bbe3 Clear groups list for services 2020-08-16 16:13:43 -04:00
C. McEnroe
3fbe9b5933 Use process groups for services
This lets us properly signal services with child processes of their own.
2020-08-16 00:27:08 -04:00
C. McEnroe
844f34a0c1 Set title after reload 2020-08-16 00:04:55 -04:00
C. McEnroe
3e9e6cf3a5 Set title on control commands
If a control command starts a service, the title should be updated.
2020-08-15 23:48:29 -04:00
C. McEnroe
1c4dd05f40 Add 126 to hardcoded stop exits
> If a command is not found, the exit status shall be 127. If the
> command name is found, but it is not an executable utility, the exit
> status shall be 126. Applications that invoke utilities without using
> the shell should use these exit status values to report similar errors.

[1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_08_02
2020-08-15 23:11:09 -04:00
C. McEnroe
1eb6eb6d37 Remove EX_CONFIG from default stopexits
I've used it for "remote" configuration which could change.
2020-08-15 22:03:01 -04:00
C. McEnroe
470e1ec7b6 Avoid "control named pipe" phrase 2020-08-15 18:54:47 -04:00
C. McEnroe
84a1f34b0c Check if pipe is writable in wrapper 2020-08-15 18:46:28 -04:00
C. McEnroe
0d7303e75f Parse config later
This is just to keep the list of open file descriptors tidier, since
parsing the config creates many pipes.
2020-08-15 18:40:51 -04:00
C. McEnroe
a6b78bc827 Only log signals other than SIGTERM 2020-08-15 18:36:30 -04:00
C. McEnroe
f7850dde39 Clarify restart interval in catsitd manual 2020-08-15 18:31:59 -04:00
C. McEnroe
8b9daf7d5d Fix resetting restart interval with explicit restart 2020-08-15 18:28:20 -04:00
C. McEnroe
497cafbf0f Add reset interval after which restart interval is reset 2020-08-15 18:25:40 -04:00
C. McEnroe
a2c5773b03 Log when service name pattern doesn't match 2020-08-15 17:50:19 -04:00
C. McEnroe
f67269202e Add FreeBSD rc script
I'm expecting to also have an OpenBSD rc script.
2020-08-15 17:40:17 -04:00
C. McEnroe
1e1a848f22 Call setproctitle with number of services 2020-08-15 16:53:15 -04:00
C. McEnroe
6fb08baee3 Rename project to catsit 2020-08-15 16:40:15 -04:00
C. McEnroe
449b0918ce Use only LOG_NOTICE and LOG_WARNING
These are the two priorities that go to a normal place
(/var/log/messages) by default.
2020-08-15 16:14:21 -04:00
C. McEnroe
3a57df720e Make log messages consistent 2020-08-15 15:57:45 -04:00
C. McEnroe
e25813c0b2 Remove closelog call
It's unclear whether closelog is really safe to call in pre-exec
context, so just trust that the log is opened with CLOEXEC.
2020-08-15 15:37:37 -04:00
C. McEnroe
92d27e09c3 Implement service status 2020-08-15 15:29:58 -04:00
C. McEnroe
b7e36c72a6 Parse control commands 2020-08-15 15:16:50 -04:00
C. McEnroe
34c39437f2 Read service pipes
Changed line reading functions to return const char * because modifying
the strings by adding '\0' into them screws up the following call.
2020-08-15 14:54:33 -04:00
C. McEnroe
f556af9ad5 Implement non-blocking line-buffered reading 2020-08-15 13:05:31 -04:00