From 0f8f03e9cf8fde9e8e75064b6614c1348d88324d Mon Sep 17 00:00:00 2001 From: Koichiro IWAO Date: Thu, 12 Mar 2015 11:22:35 +0000 Subject: [PATCH] instfiles: merge rc script from FreeBSD - merge rc script from FreeBSD - modify Makefile.am to detect OS and install suitable files --- configure.ac | 22 ++++++++++++++ instfiles/Makefile.am | 57 +++++++++++++++++++++++++---------- instfiles/rc.d/Makefile.am | 4 +++ instfiles/rc.d/xrdp | 61 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 129 insertions(+), 15 deletions(-) create mode 100644 instfiles/rc.d/Makefile.am create mode 100644 instfiles/rc.d/xrdp diff --git a/configure.ac b/configure.ac index f436d9f8..bca4adfe 100644 --- a/configure.ac +++ b/configure.ac @@ -8,6 +8,27 @@ AC_PROG_CC AC_C_CONST AC_PROG_LIBTOOL PKG_PROG_PKG_CONFIG + +case $host_os in + *linux*) + linux=yes + ;; + *freebsd*) + freebsd=yes + ;; + *netbsd*) + netbsd=yes + ;; + *openbsd*) + openbsd=yes + ;; +esac + +AM_CONDITIONAL(LINUX, [test "x$linux" = xyes]) +AM_CONDITIONAL(FREEBSD, [test "x$freebsd" = xyes]) +AM_CONDITIONAL(OPENBSD, [test "x$openbsd" = xyes]) +AM_CONDITIONAL(NETBSD, [test "x$netbsd" = xyes]) + AC_ARG_WITH([systemdsystemunitdir], AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]), [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)]) @@ -214,6 +235,7 @@ AC_CONFIG_FILES([Makefile instfiles/Makefile instfiles/pam.d/Makefile instfiles/init.d/Makefile + instfiles/rc.d/Makefile instfiles/default/Makefile instfiles/pulse/Makefile genkeymap/Makefile diff --git a/instfiles/Makefile.am b/instfiles/Makefile.am index 00847c58..cc2e562c 100644 --- a/instfiles/Makefile.am +++ b/instfiles/Makefile.am @@ -2,24 +2,12 @@ EXTRA_DIST = xrdp.sh km-0407.ini km-0409.ini km-040c.ini km-0410.ini km-0419.in xrdp-sesman.service \ xrdp.service -SUBDIRS = \ - pam.d \ - pulse - -if HAVE_SYSTEMD -systemdsystemunit_DATA = \ - xrdp-sesman.service \ - xrdp.service -else -SUBDIRS+= \ - default \ - init.d -endif - +# +# files for all platforms +# startscriptdir=$(sysconfdir)/xrdp startscript_DATA = \ - xrdp.sh \ km-0407.ini \ km-0409.ini \ km-040c.ini \ @@ -34,6 +22,37 @@ startscript_DATA = \ km-e0200411.ini \ km-e0210411.ini +# +# platform specific files +# +SUBDIRS= +if LINUX +SUBDIRS+= \ + pam.d \ + pulse +startscript_DATA+= xrdp.sh +if HAVE_SYSTEMD +systemdsystemunit_DATA = \ + xrdp-sesman.service \ + xrdp.service +else +SUBDIRS+= \ + default \ + init.d +endif # HAVE_SYSTEMD +endif # LINUX + +if FREEBSD +SUBDIRS+= \ + pam.d \ + rc.d \ + pulse +endif + +# +# install-data-hook for each platform +# +if LINUX # must be tab below install-data-hook: chmod 755 $(DESTDIR)$(sysconfdir)/xrdp/xrdp.sh @@ -41,3 +60,11 @@ install-data-hook: chmod 755 $(DESTDIR)$(sysconfdir)/init.d/xrdp; \ sed -i 's|__BASE__|$(prefix)|' $(DESTDIR)$(sysconfdir)/init.d/xrdp; \ fi +endif + +if FREEBSD +# must be tab below +install-data-hook: + chmod 755 $(DESTDIR)$(sysconfdir)/rc.d/xrdp + sed -i '' 's|%%PREFIX%%|$(prefix)|g' $(DESTDIR)$(sysconfdir)/rc.d/xrdp +endif diff --git a/instfiles/rc.d/Makefile.am b/instfiles/rc.d/Makefile.am new file mode 100644 index 00000000..5edb8ccc --- /dev/null +++ b/instfiles/rc.d/Makefile.am @@ -0,0 +1,4 @@ +EXTRA_DIST = xrdp +startscriptdir=$(sysconfdir)/rc.d +startscript_DATA = xrdp + diff --git a/instfiles/rc.d/xrdp b/instfiles/rc.d/xrdp new file mode 100644 index 00000000..24d4aabe --- /dev/null +++ b/instfiles/rc.d/xrdp @@ -0,0 +1,61 @@ +#!/bin/sh +# +# $FreeBSD$ +# +# REQUIRE: DAEMON +# PROVIDE: xrdp xrdp_sesman +# + +. /etc/rc.subr + +name="xrdp" +rcvar=xrdp_enable +xrdp_daemons="xrdp" + +# 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 + +# 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" + +# 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}) + fi + # Generate rsakeys.ini on start + if [ "${rc_arg}" = "start" -a ! -f %%PREFIX%%/etc/xrdp/rsakeys.ini ] ; then + %%PREFIX%%/bin/xrdp-keygen xrdp %%PREFIX%%/etc/xrdp/rsakeys.ini + 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 "${_rc_prefix}${rc_arg}" ${rc_extra_args} + done +} + +run_rc_command "$1"