mirror of
https://github.com/gentoo-mirror/guru.git
synced 2026-10-12 17:51:11 -04:00
Say it with me: the pidfile and its parent directories should only be writable by root unless you use supervise-daemon ;) With `checkpath -o someuser:someuser $pidfile` in start_pre(), it can cause DOS attacks because the now unprivelaged process can replace the pidfile with some other pid number in it like pid 1 and cause the host machine to crash when the daemon finally stops. Supervise-daemon can supervise without the daemon creating a pidfile so don't export the variable at all. That assumes the scripts *are* using supervise-daemon, if supervise-daemon fails to start (due to maybe some incorrect config option *wink wink*) then OpenRC falls back to the older start-stop-daemon and that *does* use the $pidfile. If thats the case then the daemon will simply fail to start (yes I haven't tested if any these packages work without $pidfile which they should since they are specifying `supervisor=supervise-daemon`). IMO failing to start is better than running in a potentially vulnerable configuration. Merges: https://codeberg.org/gentoo/guru/pulls/92 Part-off: https://codeberg.org/gentoo/guru/pulls/92 Signed-off-by: zyxhere💭 <zyx@envs.net>
34 lines
764 B
Plaintext
34 lines
764 B
Plaintext
#!/sbin/openrc-run
|
|
# Copyright 2022-2026 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
#
|
|
# shellcheck shell=sh
|
|
|
|
extra_started_commands="reload"
|
|
|
|
description="IRC bouncer"
|
|
description_reload="Refresh TLS keys"
|
|
|
|
supervisor="supervise-daemon"
|
|
command="/usr/bin/pounce"
|
|
command_args="${POUNCE_CONFIG:-/etc/pounce/pounce.conf}"
|
|
command_user="${POUNCE_USER:-pounce:pounce}"
|
|
|
|
output_logger="logger -p daemon.info -t pounce --"
|
|
error_logger="logger -p daemon.err -t pounce --"
|
|
|
|
depend() {
|
|
use dns logger
|
|
need net
|
|
}
|
|
|
|
start_pre() {
|
|
checkpath -d -o "${command_user}" /run/pounce
|
|
}
|
|
|
|
reload() {
|
|
ebegin "Refreshing ${RC_SVCNAME} keys"
|
|
start-stop-daemon --signal SIGUSR1 --pidfile "${pidfile}"
|
|
eend $? "Failed to reload ${RC_SVCNAME}"
|
|
}
|