Changeset View
Changeset View
Standalone View
Standalone View
head/libexec/rc/rc.d/accounting
Show All 15 Lines | |||||
accounting_file="/var/account/acct" | accounting_file="/var/account/acct" | ||||
extra_commands="rotate_log" | extra_commands="rotate_log" | ||||
start_cmd="accounting_start" | start_cmd="accounting_start" | ||||
stop_cmd="accounting_stop" | stop_cmd="accounting_stop" | ||||
rotate_log_cmd="accounting_rotate_log" | rotate_log_cmd="accounting_rotate_log" | ||||
create_accounting_file() | |||||
{ | |||||
install -o root -g wheel -m 0640 /dev/null "${accounting_file}" | |||||
} | |||||
accounting_start() | accounting_start() | ||||
{ | { | ||||
local _dir | local _dir | ||||
_dir="${accounting_file%/*}" | _dir="${accounting_file%/*}" | ||||
if [ ! -d "$_dir" ]; then | if [ ! -d "$_dir" ]; then | ||||
if ! mkdir -p "$_dir"; then | if ! mkdir -p -m 0750 "$_dir"; then | ||||
err 1 "Could not create $_dir." | err 1 "Could not create $_dir." | ||||
fi | fi | ||||
fi | fi | ||||
if [ ! -e "$accounting_file" ]; then | if [ ! -e "$accounting_file" ]; then | ||||
echo -n "Creating accounting file ${accounting_file}" | echo -n "Creating accounting file ${accounting_file}" | ||||
touch "$accounting_file" | create_accounting_file | ||||
echo '.' | echo '.' | ||||
fi | fi | ||||
chmod 644 "$accounting_file" | |||||
echo "Turning on accounting." | echo "Turning on accounting." | ||||
${accounting_command} ${accounting_file} | ${accounting_command} ${accounting_file} | ||||
} | } | ||||
accounting_stop() | accounting_stop() | ||||
{ | { | ||||
echo "Turning off accounting." | echo "Turning off accounting." | ||||
${accounting_command} | ${accounting_command} | ||||
} | } | ||||
accounting_rotate_log() | accounting_rotate_log() | ||||
{ | { | ||||
local _dir _file | # Note that this function must handle being called as "onerotate_log" | ||||
# (by the periodic scripts) when accounting is disabled, and handle | |||||
# being called multiple times (by an admin making mistakes) without | |||||
# anything having actually rotated the old .0 file out of the way. | |||||
_dir="${accounting_file%/*}" | if [ -e "${accounting_file}.0" ]; then | ||||
cd $_dir | err 1 "Cannot rotate accounting log, ${accounting_file}.0 already exists." | ||||
fi | |||||
if checkyesno accounting_enable; then | if [ ! -e "${accounting_file}" ]; then | ||||
_file=`mktemp newacct-XXXXX` | err 1 "Cannot rotate accounting log, ${accounting_file} does not exist." | ||||
chmod 644 $_file | |||||
${accounting_command} ${_dir}/${_file} | |||||
fi | fi | ||||
mv ${accounting_file} ${accounting_file}.0 | mv ${accounting_file} ${accounting_file}.0 | ||||
if checkyesno accounting_enable; then | if checkyesno accounting_enable; then | ||||
mv $_file ${accounting_file} | create_accounting_file | ||||
${accounting_command} "${accounting_file}" | |||||
fi | fi | ||||
} | } | ||||
load_rc_config $name | load_rc_config $name | ||||
run_rc_command "$1" | run_rc_command "$1" |