diff -ruN cbsd.bak/Makefile cbsd/Makefile --- cbsd.bak/Makefile 2018-11-24 19:35:02.213994000 +0300 +++ cbsd/Makefile 2018-11-24 22:21:31.000000000 +0300 @@ -1,7 +1,7 @@ # $FreeBSD: head/sysutils/cbsd/Makefile 485130 2018-11-17 12:38:56Z novel $ PORTNAME= cbsd -DISTVERSION= 12.0.1 +DISTVERSION= 12.0.2 CATEGORIES= sysutils MAINTAINER= olevole@olevole.ru @@ -19,7 +19,7 @@ USES= libedit pkgconfig USE_GITHUB= yes -USE_RC_SUBR= cbsdd cbsdrsyncd +USE_RC_SUBR= cbsdd cbsdrsyncd cbsd-statsd-bhyve cbsd-statsd-hoster cbsd-statsd-jail SUB_FILES= pkg-message pkg-deinstall diff -ruN cbsd.bak/distinfo cbsd/distinfo --- cbsd.bak/distinfo 2018-11-24 19:35:02.249928000 +0300 +++ cbsd/distinfo 2018-11-24 22:15:29.000000000 +0300 @@ -1,3 +1,3 @@ -TIMESTAMP = 1542455908 -SHA256 (cbsd-cbsd-12.0.1_GH0.tar.gz) = 6de79c8b76bda4c4aaa19c9641ef7e9e3c3e49b98e17db060b83bce31cd26c72 -SIZE (cbsd-cbsd-12.0.1_GH0.tar.gz) = 5749969 +TIMESTAMP = 1543086929 +SHA256 (cbsd-cbsd-12.0.2_GH0.tar.gz) = 2e1703e366ad8070d19beb7d3b77304901e0d1ca52b8395290102fdcf6e6a009 +SIZE (cbsd-cbsd-12.0.2_GH0.tar.gz) = 5764315 diff -ruN cbsd.bak/files/cbsd-statsd-bhyve.in cbsd/files/cbsd-statsd-bhyve.in --- cbsd.bak/files/cbsd-statsd-bhyve.in 1970-01-01 03:00:00.000000000 +0300 +++ cbsd/files/cbsd-statsd-bhyve.in 2018-11-24 19:09:49.000000000 +0300 @@ -0,0 +1,96 @@ +#!/bin/sh +# +# PROVIDE: cbsd_statsd_bhyve +# REQUIRE: LOGIN FILESYSTEMS sshd +# KEYWORD: shutdown +# +# cbsd_statsd_bhyve_enable="YES" +# + +. /etc/rc.subr + +name=cbsd_statsd_bhyve +rcvar=cbsd_statsd_bhyve_enable +load_rc_config $name + +# Set defaults +: ${cbsd_statsd_bhyve_enable:="NO"} + +export workdir="${cbsd_workdir}" +globalconf=${cbsd_globalconf:-"${workdir}/cbsd.conf"} + +start_cmd=${name}_start +restart_cmd=${name}_restart +extra_commands="restart" + +command="${cbsd_workdir}/tools/racct-bhyve-statsd" +pidfile="/var/run/$name.pid" +command_args="&" + +pidfile=/var/run/racct-bhyve-statsd.pid + +if [ ! -f ${globalconf} ]; then + echo "cbsd: no such ${globalconf}"; + exit 1 +fi + +if [ ! -f ${subr} ]; then + echo "cbsd: no such ${subr}"; + exit 1 +fi + +. ${globalconf} +. ${subr} + +cbsd_statsd_bhyve_start() +{ + local args= racct_enabled= + + # RACCT enabled? + racct_enabled=$( /sbin/sysctl -qn kern.racct.enable ) + [ $? -ne 0 ] && err 1 "cbsd-statsd-bhyve: RACCT not enabled" + [ "${racct_enabled}" != "1" ] && err 1 "cbsd-statsd-bhyve: RACCT not enabled" + + readconf racct-bhyve-statsd.conf + [ -n "${log_file}" ] && args="${args} --log_file=${log_file}" + [ -n "${log_level}" ] && args="${args} --log_level=${log_level}" + [ -n "${loop_interval}" ] && args="${args} --loop_interval=${loop_interval}" + [ -n "${save_loop_count}" ] && args="${args} --save_loop_count=${save_loop_count}" + + case "${prometheus_exporter_enable}" in + [Yy][Ee][Ss]) + args="${args} --prometheus_exporter=1" + ;; + [No][Oo]) + args="${args} --prometheus_exporter=0" + ;; + esac + + case "${beanstald_enable}" in + [Yy][Ee][Ss]) + args="${args} --save_beanstalkd=1" + ;; + [No][Oo]) + args="${args} --save_beanstalkd=0" + ;; + esac + + case "${sqlite3_enable}" in + [Yy][Ee][Ss]) + args="${args} --save_sqlite=1" + ;; + [No][Oo]) + args="${args} --save_sqlite=0" + ;; + esac + + exec env workdir=${cbsd_workdir} ${cbsd_workdir}/tools/racct-bhyve-statsd ${args} +} + +cbsd_statsd_bhyve_restart() +{ + cbsd_statsd_bhyve_stop + cbsd_statsd_bhyve_start +} + +run_rc_command "$1" diff -ruN cbsd.bak/files/cbsd-statsd-hoster.in cbsd/files/cbsd-statsd-hoster.in --- cbsd.bak/files/cbsd-statsd-hoster.in 1970-01-01 03:00:00.000000000 +0300 +++ cbsd/files/cbsd-statsd-hoster.in 2018-11-24 19:09:49.000000000 +0300 @@ -0,0 +1,96 @@ +#!/bin/sh +# +# PROVIDE: cbsd_statsd_hoster +# REQUIRE: LOGIN FILESYSTEMS sshd +# KEYWORD: shutdown +# +# cbsd_statsd_hoster_enable="YES" +# + +. /etc/rc.subr + +name=cbsd_statsd_hoster +rcvar=cbsd_statsd_hoster_enable +load_rc_config $name + +# Set defaults +: ${cbsd_statsd_hoster_enable:="NO"} + +export workdir="${cbsd_workdir}" +globalconf=${cbsd_globalconf:-"${workdir}/cbsd.conf"} + +start_cmd=${name}_start +restart_cmd=${name}_restart +extra_commands="restart" + +command="${cbsd_workdir}/tools/racct-hoster-statsd" +pidfile="/var/run/$name.pid" +command_args="&" + +pidfile=/var/run/racct-hoster-statsd.pid + +if [ ! -f ${globalconf} ]; then + echo "cbsd: no such ${globalconf}"; + exit 1 +fi + +if [ ! -f ${subr} ]; then + echo "cbsd: no such ${subr}"; + exit 1 +fi + +. ${globalconf} +. ${subr} + +cbsd_statsd_hoster_start() +{ + local args= racct_enabled= + + # RACCT enabled? + racct_enabled=$( /sbin/sysctl -qn kern.racct.enable ) + [ $? -ne 0 ] && err 1 "cbsd-statsd-hoster: RACCT not enabled" + [ "${racct_enabled}" != "1" ] && err 1 "cbsd-statsd-hoster: RACCT not enabled" + + readconf racct-hoster-statsd.conf + [ -n "${log_file}" ] && args="${args} --log_file=${log_file}" + [ -n "${log_level}" ] && args="${args} --log_level=${log_level}" + [ -n "${loop_interval}" ] && args="${args} --loop_interval=${loop_interval}" + [ -n "${save_loop_count}" ] && args="${args} --save_loop_count=${save_loop_count}" + + case "${prometheus_exporter_enable}" in + [Yy][Ee][Ss]) + args="${args} --prometheus_exporter=1" + ;; + [No][Oo]) + args="${args} --prometheus_exporter=0" + ;; + esac + + case "${beanstald_enable}" in + [Yy][Ee][Ss]) + args="${args} --save_beanstalkd=1" + ;; + [No][Oo]) + args="${args} --save_beanstalkd=0" + ;; + esac + + case "${sqlite3_enable}" in + [Yy][Ee][Ss]) + args="${args} --save_sqlite=1" + ;; + [No][Oo]) + args="${args} --save_sqlite=0" + ;; + esac + + exec env workdir=${cbsd_workdir} ${cbsd_workdir}/tools/racct-hoster-statsd ${args} +} + +cbsd_statsd_hoster_restart() +{ + cbsd_statsd_hoster_stop + cbsd_statsd_hoster_start +} + +run_rc_command "$1" diff -ruN cbsd.bak/files/cbsd-statsd-jail.in cbsd/files/cbsd-statsd-jail.in --- cbsd.bak/files/cbsd-statsd-jail.in 1970-01-01 03:00:00.000000000 +0300 +++ cbsd/files/cbsd-statsd-jail.in 2018-11-24 19:09:49.000000000 +0300 @@ -0,0 +1,96 @@ +#!/bin/sh +# +# PROVIDE: cbsd_statsd_jail +# REQUIRE: LOGIN FILESYSTEMS sshd +# KEYWORD: shutdown +# +# cbsd_statsd_jail_enable="YES" +# + +. /etc/rc.subr + +name=cbsd_statsd_jail +rcvar=cbsd_statsd_jail_enable +load_rc_config $name + +# Set defaults +: ${cbsd_statsd_jail_enable:="NO"} + +export workdir="${cbsd_workdir}" +globalconf=${cbsd_globalconf:-"${workdir}/cbsd.conf"} + +start_cmd=${name}_start +restart_cmd=${name}_restart +extra_commands="restart" + +command="${cbsd_workdir}/tools/racct-jail-statsd" +pidfile="/var/run/$name.pid" +command_args="&" + +pidfile=/var/run/racct-jail-statsd.pid + +if [ ! -f ${globalconf} ]; then + echo "cbsd: no such ${globalconf}"; + exit 1 +fi + +if [ ! -f ${subr} ]; then + echo "cbsd: no such ${subr}"; + exit 1 +fi + +. ${globalconf} +. ${subr} + +cbsd_statsd_jail_start() +{ + local args= racct_enabled= + + # RACCT enabled? + racct_enabled=$( /sbin/sysctl -qn kern.racct.enable ) + [ $? -ne 0 ] && err 1 "cbsd-statsd-jail: RACCT not enabled" + [ "${racct_enabled}" != "1" ] && err 1 "cbsd-statsd-jail: RACCT not enabled" + + readconf racct-jail-statsd.conf + [ -n "${log_file}" ] && args="${args} --log_file=${log_file}" + [ -n "${log_level}" ] && args="${args} --log_level=${log_level}" + [ -n "${loop_interval}" ] && args="${args} --loop_interval=${loop_interval}" + [ -n "${save_loop_count}" ] && args="${args} --save_loop_count=${save_loop_count}" + + case "${prometheus_exporter_enable}" in + [Yy][Ee][Ss]) + args="${args} --prometheus_exporter=1" + ;; + [No][Oo]) + args="${args} --prometheus_exporter=0" + ;; + esac + + case "${beanstald_enable}" in + [Yy][Ee][Ss]) + args="${args} --save_beanstalkd=1" + ;; + [No][Oo]) + args="${args} --save_beanstalkd=0" + ;; + esac + + case "${sqlite3_enable}" in + [Yy][Ee][Ss]) + args="${args} --save_sqlite=1" + ;; + [No][Oo]) + args="${args} --save_sqlite=0" + ;; + esac + + exec env workdir=${cbsd_workdir} ${cbsd_workdir}/tools/racct-jail-statsd ${args} +} + +cbsd_statsd_jail_restart() +{ + cbsd_statsd_jail_stop + cbsd_statsd_jail_start +} + +run_rc_command "$1" diff -ruN cbsd.bak/files/cbsdd.in cbsd/files/cbsdd.in --- cbsd.bak/files/cbsdd.in 2018-11-24 19:35:02.350096000 +0300 +++ cbsd/files/cbsdd.in 2018-11-24 21:49:27.000000000 +0300 @@ -49,8 +49,8 @@ stop_precmd=${name}_prestop stop_cmd=${name}_stop status_cmd="${name}_status" -reload_cmd=${name}_reload -extra_commands="reload" +restart_cmd=${name}_restart +extra_commands="restart" command="${toolsdir}/cbsdd" pidfile="/var/run/$name.pid" @@ -58,7 +58,6 @@ cbsdd_prestart() { %%PREFIX%%/bin/cbsd task mode=flushall > /dev/null 2>&1 - . ${distdir}/initenv.subr . ${inventory} @@ -67,7 +66,7 @@ update_netinfo env sqlcolnames="1" ${miscdir}/sqlcli ${dbdir}/local.sqlite "SELECT * FROM local" > ${inventory} ${miscdir}/sqlcli ${dbdir}/local.sqlite "UPDATE jails SET status='0' WHERE status='3'" - [ -n "$nat_enable" ] && %%PREFIX%%/bin/cbsd naton + [ -n "${nat_enable}" ] && %%PREFIX%%/bin/cbsd naton /usr/sbin/daemon -f ${rcddir}/jails-astart start } @@ -80,15 +79,21 @@ cbsdd_stop() { if [ -f "${pidfile}" ]; then - kill -9 $( /bin/cat ${pidfile} ) - /bin/rm -f ${pidfile} + pids=$( pgrep -F ${pidfile} 2>&1 ) + _err=$? + if [ ${_err} -eq 0 ]; then + kill -9 ${pids} && /bin/rm -f ${pidfile} + else + echo "pgrep: ${pids}" + return ${_err} + fi fi } -cbsdd_reload() +cbsdd_restart() { if [ -f "${pidfile}" ]; then - kill -9 $( /bin/cat ${pidfile} ) > /dev/null 2>&1 + pkill -9 -f ${pidfile} > /dev/null 2>&1 /bin/rm -f ${pidfile} fi run_rc_command "start" @@ -97,9 +102,17 @@ cbsdd_status() { + local _err + if [ -f "${pidfile}" ]; then - pids=$( /bin/cat ${pidfile} ) - echo "${name} is running as pid ${pids}." + pids=$( pgrep -F ${pidfile} 2>&1 ) + _err=$? + if [ ${_err} -eq 0 ]; then + echo "${name} is running as pid ${pids}." + else + echo "pgrep: ${pids}" + return ${_err} + fi else echo "${name} is not running." return 1