xref: /freebsd/contrib/blocklist/etc/rc.d/blocklistd (revision 48e64ca13d4f36795ac718911b805e3e9a726f1b)
1*48e64ca1SJose Luis Duran#!/bin/sh
2*48e64ca1SJose Luis Duran#
3*48e64ca1SJose Luis Duran# $NetBSD: blocklistd,v 1.2 2021/03/07 00:46:39 christos Exp $
4*48e64ca1SJose Luis Duran#
5*48e64ca1SJose Luis Duran
6*48e64ca1SJose Luis Duran# PROVIDE: blocklistd
7*48e64ca1SJose Luis Duran# REQUIRE: npf pf ipfilter
8*48e64ca1SJose Luis Duran# BEFORE:  SERVERS
9*48e64ca1SJose Luis Duran
10*48e64ca1SJose Luis Duran$_rc_subr_loaded . /etc/rc.subr
11*48e64ca1SJose Luis Duran
12*48e64ca1SJose Luis Duranname="blocklistd"
13*48e64ca1SJose Luis Duranrcvar=$name
14*48e64ca1SJose Luis Durancommand="/sbin/${name}"
15*48e64ca1SJose Luis Duranpidfile="/var/run/${name}.pid"
16*48e64ca1SJose Luis Duranrequired_files="/etc/${name}.conf"
17*48e64ca1SJose Luis Duranstart_precmd="${name}_precmd"
18*48e64ca1SJose Luis Duranextra_commands="reload"
19*48e64ca1SJose Luis Duran
20*48e64ca1SJose Luis Duran_sockfile="/var/run/${name}.sockets"
21*48e64ca1SJose Luis Duran_sockname="blocklistd.sock"
22*48e64ca1SJose Luis Duran
23*48e64ca1SJose Luis Duranblocklistd_precmd()
24*48e64ca1SJose Luis Duran{
25*48e64ca1SJose Luis Duran	#	Create default list of blocklistd sockets to watch
26*48e64ca1SJose Luis Duran	#
27*48e64ca1SJose Luis Duran	( umask 022 ; > $_sockfile )
28*48e64ca1SJose Luis Duran
29*48e64ca1SJose Luis Duran	#	Find /etc/rc.d scripts with "chrootdir" rcorder(8) keyword,
30*48e64ca1SJose Luis Duran	#	and if $${app}_chrootdir is a directory, add appropriate
31*48e64ca1SJose Luis Duran	#	blocklistd socket to list of sockets to watch.
32*48e64ca1SJose Luis Duran	#
33*48e64ca1SJose Luis Duran	for _lr in $(rcorder -k chrootdir /etc/rc.d/*); do
34*48e64ca1SJose Luis Duran	    (
35*48e64ca1SJose Luis Duran		_l=${_lr##*/}
36*48e64ca1SJose Luis Duran		load_rc_config ${_l}
37*48e64ca1SJose Luis Duran		eval _ldir=\$${_l}_chrootdir
38*48e64ca1SJose Luis Duran		if checkyesno $_l && [ -n "$_ldir" ]; then
39*48e64ca1SJose Luis Duran			echo "${_ldir}/var/run/${_sockname}" >> $_sockfile
40*48e64ca1SJose Luis Duran		fi
41*48e64ca1SJose Luis Duran	    )
42*48e64ca1SJose Luis Duran	done
43*48e64ca1SJose Luis Duran
44*48e64ca1SJose Luis Duran	#	If other sockets have been provided, change run_rc_command()'s
45*48e64ca1SJose Luis Duran	#	internal copy of $blocklistd_flags to force use of specific
46*48e64ca1SJose Luis Duran	#	blocklistd sockets.
47*48e64ca1SJose Luis Duran	#
48*48e64ca1SJose Luis Duran	if [ -s $_sockfile ]; then
49*48e64ca1SJose Luis Duran		echo "/var/run/${_sockname}" >> $_sockfile
50*48e64ca1SJose Luis Duran		rc_flags="-P $_sockfile $rc_flags"
51*48e64ca1SJose Luis Duran	fi
52*48e64ca1SJose Luis Duran
53*48e64ca1SJose Luis Duran	return 0
54*48e64ca1SJose Luis Duran}
55*48e64ca1SJose Luis Duran
56*48e64ca1SJose Luis Duranload_rc_config $name
57*48e64ca1SJose Luis Duranrun_rc_command "$1"
58