summaryrefslogtreecommitdiff
path: root/www/hs-postgrest/files/postgrest.in
diff options
context:
space:
mode:
Diffstat (limited to 'www/hs-postgrest/files/postgrest.in')
-rw-r--r--www/hs-postgrest/files/postgrest.in167
1 files changed, 167 insertions, 0 deletions
diff --git a/www/hs-postgrest/files/postgrest.in b/www/hs-postgrest/files/postgrest.in
new file mode 100644
index 000000000000..1848ab90152c
--- /dev/null
+++ b/www/hs-postgrest/files/postgrest.in
@@ -0,0 +1,167 @@
+#!/bin/sh
+# $FreeBSD$
+#
+# PROVIDE: postgrest
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Add postgrest_enable="YES" to /etc/rc.conf to enable PostgREST:
+#
+# Additional variables you can define are:
+#
+# postgrest_user: Username to run PostgREST
+# Default: %%POSTGREST_USER%%
+# postgrest_group: Group to run PostgREST
+# Default: %%POSTGREST_GROUP%%
+# postgrest_profile: Profile list
+# Default: default
+# postgrest_syslog_output_enable: Set to enable syslog output.
+# Default: YES
+# postgrest_syslog_output_tag Set syslog tag if syslog enabled.
+# Default: postgrest
+# postgrest_syslog_output_priority: Set syslog priority if syslog enabled.
+# Default: info
+# postgrest_syslog_output_facility: Set syslog facility if syslog enabled.
+# Default: daemon
+# postgrest_{{ profile }}_config: Configuration file to run PostgREST
+# Default: %%ETCDIR%%/default.conf
+# postgrest_{{ profile }}_syslog_output_enable Set to enable syslog output.
+# Default: YES
+# postgrest_{{ profile }}_syslog_output_tag Set syslog tag if syslog enabled.
+# Default: postgrest
+# postgrest_{{ profile }}_syslog_output_priority: Set syslog priority if syslog enabled.
+# Default: info
+# postgrest_{{ profile }}_syslog_output_facility: Set syslog facility if syslog enabled.
+# Default: daemon
+
+. /etc/rc.subr
+
+name="postgrest"
+rcvar="postgrest_enable"
+start_precmd="postgrest_start_precmd"
+start_cmd="postgrest_start"
+stop_cmd="postgrest_stop"
+reload_cmd="postgrest_reload"
+extra_commands="reload"
+
+load_rc_config $name
+
+: ${postgrest_enable:="NO"}
+: ${postgrest_user:="%%POSTGREST_USER%%"}
+: ${postgrest_group:="%%POSTGREST_GROUP%%"}
+: ${postgrest_profile:="default"}
+: ${postgrest_default_config:="%%ETCDIR%%/default.conf"}
+: ${postgrest_syslog_output_enable:="YES"}
+
+postgrest_start_profile()
+{
+ local _profile _pidfile _child_pidfile _config
+ local _syslog_output_enable _syslog_output_tag _syslog_output_priority _syslog_output_facility _syslog_output_flags
+ local procname command command_args
+
+ _profile=$1
+
+ _pidfile="/var/run/${name}/${_profile}.pid"
+ _child_pidfile="/var/run/${name}/${_profile}.child.pid"
+
+ eval _config=\${${name}_${_profile}_config}
+ eval _syslog_output_enable=\${${name}_syslog_output_enable}
+ eval _syslog_output_enable=\${${name}_${_profile}_syslog_output_enable:-${_syslog_output_enable}}
+ eval _syslog_output_tag=\${${name}_syslog_output_tag:-${name}}
+ eval _syslog_output_tag=\${${name}_${_profile}_syslog_output_tag:-"${_syslog_output_tag}"}
+ eval _syslog_output_priority=\${${name}_syslog_output_priority}
+ eval _syslog_output_priority=\${${name}_${_profile}_syslog_output_priority:-"${_syslog_output_priority}"}
+ eval _syslog_output_facility=\${${name}_syslog_output_facility}
+ eval _syslog_output_facility=\${${name}_${_profile}_syslog_output_facility:-"${_syslog_output_facility}"}
+
+ if [ ! -r "${_config}" ]; then
+ warn "${name}.${_profile}: config file does not exist"
+ return 1
+ fi
+
+ if checkyesno _syslog_output_enable; then
+ if [ -n "${_syslog_output_tag}" ]; then
+ _syslog_output_flags="-T ${_syslog_output_tag}"
+ fi
+ if [ -n "${_syslog_output_priority}" ]; then
+ _syslog_output_flags="${_syslog_output_flags} -s ${_syslog_output_priority}"
+ fi
+ if [ -n "${_syslog_output_facility}" ]; then
+ _syslog_output_flags="${_syslog_output_flags} -l ${_syslog_output_facility}"
+ fi
+ fi
+
+ procname="%%PREFIX%%/sbin/postgrest"
+ command="/usr/sbin/daemon"
+ command_args="-f ${_syslog_output_flags} -p ${_child_pidfile} -P ${_pidfile} -t ${name}.${_profile} ${procname} ${_config}"
+
+ su -m ${postgrest_user} -c "${command} ${rc_flags} ${command_args}"
+ rc=$?
+
+ return ${rc}
+}
+
+postgrest_start_precmd()
+{
+ if [ ! -d "/var/run/${name}" ]; then
+ install -d -m 0750 -o ${postgrest_user} -g ${postgrest_group} "/var/run/${name}"
+ fi
+}
+
+postgrest_start()
+{
+ local _ok _profile
+
+ if [ -n "$*" ]; then
+ _ok=
+ for _profile in $@; do
+ postgrest_start_profile ${_profile} || continue
+ _ok="${_ok} ${_profile}"
+ done
+
+ if [ -n "${_ok}" ]; then
+ echo "Starting ${name}:${_ok}."
+ fi
+ fi
+}
+
+postgrest_stop()
+{
+ local _ok _profile _pidfile
+
+ if [ -n "$*" ]; then
+ _ok=
+ for _profile in $@; do
+ _pidfile="/var/run/${name}/${_profile}.pid"
+ /bin/pkill -F "${_pidfile}" 2>/dev/null || continue
+ _ok="${_ok} ${_profile}"
+ done
+
+ if [ -n "${_ok}" ]; then
+ echo "Stopping ${name}:${_ok}."
+ fi
+ fi
+}
+
+postgrest_reload()
+{
+ local _ok _profile _pidfile
+
+ if [ -n "$*" ]; then
+ _ok=
+ for _profile in $@; do
+ _pidfile="/var/run/${name}/${_profile}.child.pid"
+ /bin/pkill -USR1 -F "${_pidfile}" 2>/dev/null || continue
+ _ok="${_ok} ${_profile}"
+ done
+
+ if [ -n "${_ok}" ]; then
+ echo "Reloading ${name}:${_ok}."
+ fi
+ fi
+}
+
+case $# in
+1) run_rc_command $@ ${postgrest_profile} ;;
+*) run_rc_command $@ ;;
+esac