summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoichiro IWAO <meta@vmeta.jp>2015-03-12 11:22:35 +0000
committerKoichiro IWAO <meta@vmeta.jp>2015-06-18 16:25:39 +0900
commit0f8f03e9cf8fde9e8e75064b6614c1348d88324d (patch)
tree701b11a37cbe0a28d1a3a8c6b04c99c91c22b9a6
parentf8432d0bb71e0b358c8ab32fdfae816229973034 (diff)
downloadxrdp-proprietary-0f8f03e9cf8fde9e8e75064b6614c1348d88324d.tar.gz
xrdp-proprietary-0f8f03e9cf8fde9e8e75064b6614c1348d88324d.zip
instfiles: merge rc script from FreeBSD
- merge rc script from FreeBSD - modify Makefile.am to detect OS and install suitable files
-rw-r--r--configure.ac22
-rw-r--r--instfiles/Makefile.am57
-rw-r--r--instfiles/rc.d/Makefile.am4
-rw-r--r--instfiles/rc.d/xrdp61
4 files changed, 129 insertions, 15 deletions
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"