Add Unifi Controller with integrated Unifi-Poller (#75)

* Add Unifi Controller with integrated Unifi-Poller
Install & Update uses 'latest' release. Persistent data using influxdb.

Unifi Poller now optional

* fix global dataset refs

* move unifi_poller bootscript into rc folder

* Apply suggestions from code review

* Update jails/unifi/includes/rc/mongod

Forgot to add one suggestion from review.

* Added shellcheck ignores for all RC scripts

Shellcheck doesn't play nice with RC scripts, those advices are often either wrong, or very hard (not worth it) to change enough to get it to pass and work.

* Last rc ignores for shellcheck

* Update jails/unifi/install.sh

* Shellcheck to shellcheck

Making shellcheck lowercase for parsing

Co-authored-by: Kjeld Schouten-Lebbing <kjeld@schouten-lebbing.nl>
This commit is contained in:
Matt Coleman
2020-04-29 12:40:14 -04:00
committed by GitHub
parent 616eb2a432
commit 66e997069a
11 changed files with 618 additions and 0 deletions

View File

@ -0,0 +1,64 @@
#!/bin/sh
# shellcheck disable=SC1091,SC2034,SC2223,SC2154,SC1090,SC2046,SC2086,SC2155,SC2181,SC2006
# PROVIDE: mongod
# REQUIRE: NETWORK ldconfig
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# mongod_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable mongod.
# mongod_limits (bool): Set to "NO" by default.
# Set it to yes to run `limits -e -U mongodb`
# just before mongod starts.
# mongod_dbpath (str): Default to "/var/db/mongodb"
# Base database directory.
# mongod_flags (str): Custom additional arguments to be passed to mongod.
# Default to "--logpath ${mongod_dbpath}/mongod.log --logappend".
# mongod_config (str): Default to "/usr/local/etc/mongodb.conf"
# Path to config file
#
. /etc/rc.subr
name="mongod"
rcvar=mongod_enable
load_rc_config $name
: ${mongod_enable="NO"}
: ${mongod_limits="NO"}
: ${mongod_dbpath="/config/mongodb"}
: ${mongod_flags="--logpath ${mongod_dbpath}/mongod.log --logappend --setParameter=disabledSecureAllocatorDomains=\*"}
: ${mongod_user="mongodb"}
: ${mongod_group="mongodb"}
: ${mongod_config="/usr/local/etc/mongodb.conf"}
pidfile="${mongod_dbpath}/mongod.lock"
command=/usr/local/bin/${name}
command_args="--config $mongod_config --dbpath $mongod_dbpath --fork >/dev/null 2>/dev/null"
start_precmd="${name}_prestart"
mongod_create_dbpath()
{
mkdir "${mongod_dbpath}" >/dev/null 2>/dev/null
[ $? -eq 0 ] && chown -R "${mongod_user}":"${mongod_group}" "${mongod_dbpath}"
}
mongod_prestart()
{
if [ ! -d "${mongod_dbpath}" ]; then
mongod_create_dbpath || return 1
fi
if checkyesno mongod_limits; then
# TODO check this and clean this up
# Shellcheck disable=SC2046,SC2006
eval `/usr/bin/limits -e -U ${mongod_user}` 2>/dev/null
else
return 0
fi
}
run_rc_command "$1"

View File

@ -0,0 +1,87 @@
#!/bin/sh
# shellcheck disable=SC1091,SC2034,SC2223,SC2154,SC1090,SC2046,SC2086,SC2155,SC2237
#
# Created by: Mark Felder <feld@FreeBSD.org>
# $FreeBSD: branches/2020Q2/net-mgmt/unifi5/files/unifi.in 512281 2019-09-18 17:37:59Z feld $
#
# PROVIDE: unifi
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable `unifi':
#
# unifi_enable="YES"
#
# Other configuration settings for unifi that can be set in /etc/rc.conf:
#
# unifi_user (str)
# This is the user that unifi runs as
# Set to unifi by default
#
# unifi_group (str)
# This is the group that unifi runs as
# Set to unifi by default
#
# unifi_chdir (str)
# This is the directory that unifi chdirs into before starting
# Set to /usr/local/share/java/unifi by default
#
# unifi_java_home (str)
# The path to the base directory for the Java to use to run unifi
# Defaults to /usr/local/openjdk8
#
# unifi_javaflags (str)
# Flags passed to Java to run unifi
# Set to "-Djava.awt.headless=true -Xmx1024M" by default
#
. /etc/rc.subr
name=unifi
rcvar=unifi_enable
load_rc_config ${name}
: ${unifi_enable:=NO}
: ${unifi_user:=unifi}
: ${unifi_group:=unifi}
: ${unifi_chdir=/config/controller/unifi}
: ${unifi_java_home=/usr/local/openjdk8}
: ${unifi_javaflags="-Djava.awt.headless=true -Xmx1024M"}
pidfile="/var/run/unifi/${name}.pid"
procname=${unifi_java_home}/bin/java
command=/usr/sbin/daemon
command_args="-f -p ${pidfile} ${unifi_java_home}/bin/java ${unifi_javaflags} com.ubnt.ace.Launcher start"
start_precmd=start_precmd
stop_precmd=stop_precmd
stop_postcmd=stop_postcmd
export CLASSPATH=$(echo ${unifi_chdir}/lib/*.jar | tr ' ' ':')
start_precmd()
{
if [ ! -e /var/run/unifi ] ; then
install -d -o unifi -g unifi /var/run/unifi;
fi
}
stop_precmd()
{
if [ -r ${pidfile} ]; then
_UNIFIPID=$(check_pidfile ${pidfile} ${procname})
export _UNIFI_CHILDREN=$(pgrep -P ${_UNIFIPID})
fi
}
stop_postcmd()
{
if ! [ -z ${_UNIFI_CHILDREN} ]; then
echo "Cleaning up leftover child processes."
kill $sig_stop ${_UNIFI_CHILDREN}
wait_for_pids ${_UNIFI_CHILDREN}
fi
}
run_rc_command "$1"

View File

@ -0,0 +1,36 @@
#!/bin/sh
# shellcheck disable=SC1091,SC2034,SC2223,SC2154,SC1090,SC2046
#
# FreeBSD rc.d startup script for unifi-poller.
#
# PROVIDE: unifi-poller
# REQUIRE: networking syslog
# KEYWORD:
. /etc/rc.subr
name="unifi_poller"
real_name="unifi-poller"
rcvar="unifi_poller_enable"
unifi_poller_command="/usr/local/bin/${real_name}"
unifi_poller_user="nobody"
unifi_poller_config="/config/up.conf"
pidfile="/var/run/${real_name}/pid"
# This runs `daemon` as the `unifi_poller_user` user.
command="/usr/sbin/daemon"
command_args="-P ${pidfile} -r -t ${real_name} -T ${real_name} -l daemon ${unifi_poller_command} -c ${unifi_poller_config}"
load_rc_config ${name}
: ${unifi_poller_enable:=no}
# Make a place for the pid file.
mkdir -p $(dirname ${pidfile})
chown -R $unifi_poller_user $(dirname ${pidfile})
# Suck in optional exported override variables.
# ie. add something like the following to this file: export UP_POLLER_DEBUG=true
[ -f "/usr/local/etc/defaults/${real_name}" ] && . "/usr/local/etc/defaults/${real_name}"
# Go!
run_rc_command "$1"