diff options
Diffstat (limited to 'instfiles/rc.d/xrdp')
-rw-r--r-- | instfiles/rc.d/xrdp | 74 |
1 files changed, 38 insertions, 36 deletions
diff --git a/instfiles/rc.d/xrdp b/instfiles/rc.d/xrdp index 9dec649e..b5dbcd25 100644 --- a/instfiles/rc.d/xrdp +++ b/instfiles/rc.d/xrdp @@ -1,6 +1,7 @@ #!/bin/sh # -# Copyright (c) 1992-2015 The FreeBSD Project. All rights reserved. +# Copyright (c) 1992-2018 The FreeBSD Project. All rights reserved. +# Copyright (c) 2015-2018 Koichiro Iwao <meta@FreeBSD.org> # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -26,55 +27,56 @@ # $FreeBSD$ # # REQUIRE: DAEMON -# PROVIDE: xrdp xrdp_sesman +# PROVIDE: xrdp # +# Add the following line to /etc/rc.conf to enable xrdp: +# +# xrdp_enable="YES" +# xrdp_sesman_enable="YES" . /etc/rc.subr name="xrdp" -rcvar=xrdp_enable -xrdp_daemons="xrdp" +rcvar="xrdp_enable" -# Read settings and set default values. load_rc_config "$name" : ${xrdp_enable="NO"} -# Enable/disable dependent daemon. -if [ -n "${rcvar}" ] && checkyesno "xrdp_sesman_enable"; then - xrdp_daemons="xrdp xrdp_sesman" -fi +extra_commands="status allstart allstop allrestart" +command="%%PREFIX%%/sbin/xrdp" + +allstart_cmd="xrdp_allstart" +allstop_cmd="xrdp_allstop" +allrestart_cmd="xrdp_allrestart" -# Commands. -extra_commands="reload status" -start_cmd="xrdp_cmd" -stop_cmd="xrdp_cmd" -status_cmd="xrdp_cmd" -reload_cmd="xrdp_cmd" -rcvar_cmd="xrdp_cmd" +xrdp_allstart() +{ + run_rc_command "start" + + if checkyesno "xrdp_sesman_enable" && \ + ! %%PREFIX%%/etc/rc.d/xrdp-sesman forcestatus 1>/dev/null 2>&1; then + %%PREFIX%%/etc/rc.d/xrdp-sesman start || return 1 + fi +} -# Command wrapper to call each of them per daemon. -xrdp_cmd() { - local name rcvar command pidfile xrdp_daemons - # Prevent recursive calling. - unset "${rc_arg}_cmd" - # Stop processes in the reverse to order. - if [ "${rc_arg}" = "stop" ] ; then - xrdp_daemons=$(reverse_list ${xrdp_daemons}) +xrdp_allstop() +{ + if checkyesno "xrdp_sesman_enable" && \ + %%PREFIX%%/etc/rc.d/xrdp-sesman forcestatus 1>/dev/null 2>&1; then + %%PREFIX%%/etc/rc.d/xrdp-sesman stop || return 1 fi - # Apply to all the daemons. - for name in ${xrdp_daemons}; do - rcvar=${name}_enable - if [ "${name}" = "xrdp_sesman" ]; then - command="%%PREFIX%%/sbin/xrdp-sesman" - pidfile="/var/run/xrdp-sesman.pid" - else - command="%%PREFIX%%/sbin/${name}" - pidfile="/var/run/${name}.pid" - fi + run_rc_command "stop" +} + +xrdp_allrestart() +{ + if checkyesno "xrdp_sesman_enable" && \ + %%PREFIX%%/etc/rc.d/xrdp-sesman forcestatus 1>/dev/null 2>&1; then + %%PREFIX%%/etc/rc.d/xrdp-sesman restart || return 1 + fi - run_rc_command "${_rc_prefix}${rc_arg}" ${rc_extra_args} - done + run_rc_command "restart" } run_rc_command "$1" |