aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Kreuzer <skreuzer@FreeBSD.org>2016-08-11 16:06:51 +0000
committerSteven Kreuzer <skreuzer@FreeBSD.org>2016-08-11 16:06:51 +0000
commitd830ec9925a7e1171a61bead7b592552ffd4705f (patch)
treea5a8b1f62e6956aa4a1bab0c8deb26ff0ec8f764
parentd46d497ab78671c63a0ca6e2acf11127e25ec073 (diff)
downloadports-d830ec9925a7e1171a61bead7b592552ffd4705f.tar.gz
ports-d830ec9925a7e1171a61bead7b592552ffd4705f.zip
Add a rc script and have taskd run as an unprivileged user
PR: 204757 Submitted by: Ike Eichorn <ike@michaeleichorn.com>
Notes
Notes: svn path=/head/; revision=420083
-rw-r--r--GIDs2
-rw-r--r--UIDs2
-rw-r--r--deskutils/taskd/Makefile32
-rw-r--r--deskutils/taskd/files/taskd.in35
-rw-r--r--deskutils/taskd/pkg-message22
-rw-r--r--deskutils/taskd/pkg-plist14
6 files changed, 88 insertions, 19 deletions
diff --git a/GIDs b/GIDs
index b9e70d3dd155..e64fd97f5888 100644
--- a/GIDs
+++ b/GIDs
@@ -557,7 +557,7 @@ freeswitch:*:610:
# free: 613
# free: 614
ntpa:*:615:
-# free: 616
+taskd:*:616:
# free: 617
# free: 618
# free: 619
diff --git a/UIDs b/UIDs
index f267a5c55d2c..db2e945036ca 100644
--- a/UIDs
+++ b/UIDs
@@ -562,7 +562,7 @@ freeswitch:*:610:610::0:0:Freeswitch user:/nonexistent:/usr/sbin/nologin
# free: 613
# free: 614
ntpa:*:615:615::0:0:NTPa user:/nonexistent:/usr/sbin/nologin
-# free: 616
+taskd:*:616:616::0:0:taskd user:/nonexistent:/usr/sbin/nologin
# free: 617
# free: 618
# free: 619
diff --git a/deskutils/taskd/Makefile b/deskutils/taskd/Makefile
index 318b7c0e5179..29576f281e12 100644
--- a/deskutils/taskd/Makefile
+++ b/deskutils/taskd/Makefile
@@ -3,7 +3,7 @@
PORTNAME= taskd
PORTVERSION= 1.1.0
-PORTREVISION= 2
+PORTREVISION= 3
CATEGORIES= deskutils
MASTER_SITES= http://taskwarrior.org/download/
@@ -16,6 +16,19 @@ LIB_DEPENDS= libgnutls.so:security/gnutls
RUN_DEPENDS= bash:shells/bash
USES= cmake:outsource compiler:c++11-lib shebangfix
+USE_RC_SUBR= taskd
+
+USERS= taskd
+GROUPS= taskd
+
+TASKD_DBDIR?= /var/db/${PORTNAME}
+
+PLIST_SUB+= TASKD_DBDIR="${TASKD_DBDIR}" \
+ TASKD_USER="${USERS}" \
+ TASKD_GROUP="${GROUPS}"
+
+SUB_LIST+= TASKD_DBDIR="${TASKD_DBDIR}"
+
SHEBANG_FILES= demo/client/case* \
demo/client/malformed* \
demo/client/run \
@@ -33,25 +46,10 @@ SHEBANG_FILES= demo/client/case* \
CFLAGS+= -g -O0
-PLIST_FILES= bin/taskd \
- bin/taskdctl \
- man/man1/taskd.1.gz \
- man/man1/taskdctl.1.gz \
- man/man5/taskdrc.5.gz \
- share/taskd/README \
- share/taskd/generate \
- share/taskd/generate.ca \
- share/taskd/generate.client \
- share/taskd/generate.crl \
- share/taskd/generate.server \
- share/taskd/vars
-
PORTDOCS= *
post-install:
(cd ${WRKSRC}/pki && ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR})
-.for s in generate generate.ca generate.client generate.crl generate.server
- ${CHMOD} 755 ${STAGEDIR}${DATADIR}/${s}
-.endfor
+ ${MKDIR} ${STAGEDIR}${TASKD_DBDIR}
.include <bsd.port.mk>
diff --git a/deskutils/taskd/files/taskd.in b/deskutils/taskd/files/taskd.in
new file mode 100644
index 000000000000..11c2403d50a1
--- /dev/null
+++ b/deskutils/taskd/files/taskd.in
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+# $FreeBSD$
+#
+# PROVIDE: taskd
+# REQUIRE: LOGIN
+# KEYWORD: shutdown
+#
+# Add these lines to /etc/rc.conf.local or /etc/rc.conf
+# to enable this service:
+#
+# taskd_enable (bool): Set to NO by default.
+# Set it to YES to enable taskd.
+# taskd_data (path): Set to %%TASKD_DBDIR%% by default.
+# Taskd data directory (TASKDDATA)
+# taskd_user (str): Set to taskd by default.
+# User to run taskd as.
+
+. /etc/rc.subr
+
+name=taskd
+rcvar=taskd_enable
+
+load_rc_config $name
+
+: ${taskd_enable="NO"}
+: ${taskd_data="%%TASKD_DBDIR%%"}
+: ${taskd_user="taskd"}
+
+command=%%PREFIX%%/bin/${name}
+pidfile=$(${command} config --data $taskd_data | awk '/pid.file/ {print $2}')
+
+command_args="server --data $taskd_data --daemon"
+
+run_rc_command "$1"
diff --git a/deskutils/taskd/pkg-message b/deskutils/taskd/pkg-message
new file mode 100644
index 000000000000..b011b012a60c
--- /dev/null
+++ b/deskutils/taskd/pkg-message
@@ -0,0 +1,22 @@
+=======================================================================
+taskd requires user directed configuration prior to use.
+
+See taskwarrior.org/docs/taskserver/configure.html for configuration
+information. The generate script has been installed to
+/usr/local/share/taskd.
+
+After completing configuration to start taskd at system startup add
+taskd_enable="YES" to rc.conf. If you configured taskd with a TASKDDATA
+other than /var/db/taskd you will also need to set taskd_data in rc.conf
+to that path.
+
+The rc script will start taskd as the unprivileged user taskd, this
+requires that your TASKDDATA directory and /var/log/taskd.log be owned
+by taskd:taskd. If you prefer to use another user specify this in
+rc.conf using taskd_user.
+
+To add users see: taskwarrior.org/docs/taskserver/user.html
+
+To configure taskwarrior to use your taskd server see:
+taskwarrior.org/docs/taskserver/taskwarrior.html
+=======================================================================
diff --git a/deskutils/taskd/pkg-plist b/deskutils/taskd/pkg-plist
new file mode 100644
index 000000000000..4f311dfd27dc
--- /dev/null
+++ b/deskutils/taskd/pkg-plist
@@ -0,0 +1,14 @@
+bin/taskd
+bin/taskdctl
+man/man1/taskd.1.gz
+man/man1/taskdctl.1.gz
+man/man5/taskdrc.5.gz
+share/taskd/README
+@mode 0755
+%%DATADIR%%/generate
+%%DATADIR%%/generate.ca
+%%DATADIR%%/generate.client
+%%DATADIR%%/generate.crl
+%%DATADIR%%/generate.server
+%%DATADIR%%/vars
+@dir(%%TASKD_USER%%,%%TASKD_GROUP%%,) %%TASKD_DBDIR%%