1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #!/bin/sh
- #
- # $FreeBSD$
- #
- # Should probably in the future allow running as non-root
- # and enable multiple interfaces in some cleaner way.
- # PROVIDE: tangd
- # REQUIRE: NETWORKING DAEMON
- # KEYWORD: nojail
- . /etc/rc.subr
- name="tangd"
- desc="Network Presence Binding Daemon (tang)"
- rcvar="tangd_enable"
- command="/usr/local/bin/socat"
- load_rc_config $name
- : ${tangd_enable:=no}
- : ${tangd_ip="127.0.0.1"}
- : ${tangd_port="8888"}
- : ${tangd_jwkdir="@jwkdir@"}
- : ${tangd_logfile="/var/log/tang"}
- : ${tangd_executable="@libexecdir@/tangd"}
- pidfile="/var/run/${name}.pid"
- required_files="@libexecdir@/${name}"
- required_dirs="${tangd_jwkdir}"
- start_postcmd="${name}_poststart"
- _tangd_listen_args="TCP-LISTEN:${tangd_port},bind=${tangd_ip},fork"
- command_args="${_tangd_listen_args} SYSTEM:\"${tangd_executable} ${tangd_jwkdir} 2>> ${tangd_logfile} \" &"
- # Since we may not be the only socat running we can't use the built-in process
- # management, so we'll need to use a pid file and find the pid from unique arguments.
- tangd_poststart() {
- ps_pid=`ps ax -o pid= -o command= | grep ${_tangd_listen_args} | grep -v grep | awk '{print $1}'`
- if [ -z "$ps_pid" ]; then
- err 1 "Cannot get pid for ${command} ${command_args}"
- fi
- echo $ps_pid > ${pidfile}
- return $?
- }
- run_rc_command "$1"
|