diff --git a/src/bridge/bridge.pro b/src/bridge/bridge.pro index bc1de8f..8d8c277 100644 --- a/src/bridge/bridge.pro +++ b/src/bridge/bridge.pro @@ -17,10 +17,10 @@ SOURCES += main.cpp \ TARGET=sysadm-bridge target.path=/usr/local/bin -#scripts.path=/usr/local/bin/ -#scripts.extra=install sysadm-server $(INSTALL_ROOT)/usr/local/bin/ +scripts.path=/usr/local/bin/ +scripts.extra=install sysadm-bridge-start $(INSTALL_ROOT)/usr/local/bin/ -INSTALLS += target +INSTALLS += target scripts QMAKE_LIBDIR = /usr/local/lib/qt5 /usr/local/lib diff --git a/src/bridge/sysadm-bridge-start b/src/bridge/sysadm-bridge-start new file mode 100644 index 0000000..89c91ac --- /dev/null +++ b/src/bridge/sysadm-bridge-start @@ -0,0 +1,25 @@ +#!/bin/sh +# Helper script which auto-gens a new SSL key for each start +# of the sysadm server + +ssl_keygen() +{ + if [ ! -d "/usr/local/etc/sysadm" ] ; then + mkdir -p /usr/local/etc/sysadm + fi + openssl req -x509 -nodes -newkey rsa:2048 \ + -keyout /usr/local/etc/sysadm/bridgeserver.key \ + -out /usr/local/etc/sysadm/bridgeserver.crt -days 1024 \ + -subj "/C=US/ST=MY/L=NULL/O=SysAdm/OU=SysAdm/CN=SysAdm/emailAddress=none@example.org" 2>/dev/null +} + +export PATH="${PATH}:/usr/local/bin:/usr/local/sbin" +ssl_keygen "$1" +command="/usr/local/bin/sysadm-bridge" +flags="" + +if [ -n "$1" ] ; then + flags="$1" +fi + +exec $command $flags diff --git a/src/port-files/pkg-plist b/src/port-files/pkg-plist index f5cafe3..2bbc12d 100644 --- a/src/port-files/pkg-plist +++ b/src/port-files/pkg-plist @@ -4,6 +4,7 @@ etc/launchd/daemons/org.pcbsd.sysadm.json.dist etc/launchd/daemons/org.pcbsd.sysadm-rest.json.dist etc/sysadm.conf.dist etc/rc.d/sysadm +etc/rc.d/sysadm-bridge etc/rc.d/sysadm-rest share/launchd/daemons/org.pcbsd.sysadm.json share/launchd/daemons/org.pcbsd.sysadm-rest.json diff --git a/src/rc.d/sysadm-bridge b/src/rc.d/sysadm-bridge new file mode 100755 index 0000000..b6dc200 --- /dev/null +++ b/src/rc.d/sysadm-bridge @@ -0,0 +1,46 @@ +#!/bin/sh +# $FreeBSD$ + +# PROVIDE: sysadm-bridge +# REQUIRE: LOGIN cleanvar +# KEYWORD: shutdown + +# +# Add the following lines to /etc/rc.conf to enable sysadm: +# sysadm_bridge_enable (bool): Set to "NO" by default. +# Set it to "YES" to enable sysadm + +. /etc/rc.subr + +name="sysadm_bridge" +rcvar=sysadm_bridge_enable + +start_cmd="sysadm_bridge_start" +stop_cmd="sysadm_bridge_stop" +flags="" + +[ -z "$sysadm_bridge_enable" ] && sysadm_bridge_enable="NO" + +load_rc_config $name + +sysadm_bridge_stop() +{ + if [ -e "/var/run/sysadm-bridge.pid" -o -e "/var/run/sysadm-bridge-daemon.pid" ] ; then + pkill -9 -F /var/run/sysadm-bridge-daemon.pid >/dev/null 2>/dev/null + pkill -9 -F /var/run/sysadm-bridge.pid >/dev/null 2>/dev/null + rm /var/run/sysadm-bridge-daemon.pid 2>/dev/null + rm /var/run/sysadm-bridge.pid 2>/dev/null + fi +} + +sysadm_start() +{ + export PATH="${PATH}:/usr/local/bin:/usr/local/sbin" + sysadm_stop + echo "Starting sysadm bridge..." + command="/usr/local/bin/sysadm-bridge" + daemon -r -P /var/run/sysadm-bridge-daemon.pid -p /var/run/sysadm-bridge.pid $command $flags + chmod 744 /var/run/sysadm-bridge.pid >/dev/null 2>/dev/null +} + +run_rc_command "$1"