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