users for snapclient and snapserver daemon

This commit is contained in:
badaix 2017-02-07 20:11:49 +01:00
parent 88cf84aa50
commit 0f2359c971
11 changed files with 64 additions and 22 deletions

View file

@ -101,7 +101,7 @@ else
install: install:
$(MAKE) adduser $(MAKE) adduser
$(MAKE) installfiles $(MAKE) installfiles
install -g audio -o snapcast -d /var/run/$(BIN) install -g audio -o snapclient -d /var/run/$(BIN)
@if [[ `systemctl` =~ -\.mount ]]; then \ @if [[ `systemctl` =~ -\.mount ]]; then \
$(MAKE) installsystemd; \ $(MAKE) installsystemd; \
@ -135,8 +135,8 @@ installsysv:
/etc/init.d/$(BIN) start; \ /etc/init.d/$(BIN) start; \
adduser: adduser:
@if ! getent passwd snapcast >/dev/null; then \ @if ! getent passwd snapclient >/dev/null; then \
adduser --quiet --ingroup audio --system --no-create-home --home /var/lib/snapcast snapcast; \ adduser --quiet --ingroup audio --system --no-create-home --home /var/lib/snapclient snapclient; \
fi; \ fi; \
ifeq ($(TARGET), MACOS) ifeq ($(TARGET), MACOS)
@ -184,5 +184,5 @@ uninstallsystemd:
systemctl daemon-reload; \ systemctl daemon-reload; \
deluser: deluser:
@deluser --quiet --system snapcast > /dev/null || true @deluser --quiet --system snapclient > /dev/null || true

View file

@ -48,7 +48,7 @@ do_start()
PIDDIR=$(dirname "$PIDFILE") PIDDIR=$(dirname "$PIDFILE")
if [ ! -d "$PIDDIR" ]; then if [ ! -d "$PIDDIR" ]; then
mkdir -m 0755 $PIDDIR mkdir -m 0755 $PIDDIR
chown snapcast:audio $PIDDIR chown snapclient:audio $PIDDIR
fi fi
# Return # Return

View file

@ -7,9 +7,9 @@ ACTION="$1"
VERSION="$2" VERSION="$2"
if [ "$ACTION" = "configure" ]; then if [ "$ACTION" = "configure" ]; then
# add the snapcast user # add the snapclient user
if ! getent passwd snapcast >/dev/null; then if ! getent passwd snapclient >/dev/null; then
adduser --quiet --ingroup audio --system --no-create-home snapcast adduser --quiet --ingroup audio --system --no-create-home snapclient
fi fi
fi fi

View file

@ -3,15 +3,15 @@
set -e set -e
if [ "$1" = "purge" ]; then if [ "$1" = "purge" ]; then
# clean up all statoverrides that belonged to snapcast, so the # clean up all statoverrides that belonged to snapclient, so the
# snapcast system user can be removed cleanly # snapclient system user can be removed cleanly
for i in $(dpkg-statoverride --list | awk '/^snapcast / {print $4}'); do for i in $(dpkg-statoverride --list | awk '/^snapclient / {print $4}'); do
if dpkg-statoverride --list --quiet "$i" >/dev/null; then if dpkg-statoverride --list --quiet "$i" >/dev/null; then
dpkg-statoverride --force --quiet --remove "$i" dpkg-statoverride --force --quiet --remove "$i"
fi fi
done done
deluser --quiet --system snapcast > /dev/null || true deluser --quiet --system snapclient > /dev/null || true
fi fi
#DEBHELPER# #DEBHELPER#

View file

@ -160,7 +160,10 @@ int main (int argc, char **argv)
if (daemonOption.isSet()) if (daemonOption.isSet())
{ {
#ifdef HAS_DAEMON #ifdef HAS_DAEMON
daemonize("snapcast", "audio", "/var/run/snapclient/pid." + cpt::to_string(instance)); string pidFile = "/var/run/snapclient/pid";
if (instance != 1)
pidFile += "." + cpt::to_string(instance);
daemonize("snapclient", "audio", pidFile);
if (processPriority < -20) if (processPriority < -20)
processPriority = -20; processPriority = -20;
else if (processPriority > 19) else if (processPriority > 19)

View file

@ -111,7 +111,7 @@ else
install: install:
$(MAKE) adduser $(MAKE) adduser
$(MAKE) installfiles $(MAKE) installfiles
install -g audio -o snapcast -d /var/run/$(BIN) install -g nogroup -o snapserver -d /var/run/$(BIN)
@if [[ `systemctl` =~ -\.mount ]]; then \ @if [[ `systemctl` =~ -\.mount ]]; then \
$(MAKE) installsystemd; \ $(MAKE) installsystemd; \
@ -149,8 +149,8 @@ installbsd:
cp debian/$(BIN).bsd /usr/local/etc/rc.d/$(BIN); \ cp debian/$(BIN).bsd /usr/local/etc/rc.d/$(BIN); \
adduser: adduser:
@if ! getent passwd snapcast >/dev/null; then \ @if ! getent passwd snapserver >/dev/null; then \
adduser --quiet --ingroup audio --system --no-create-home --home /var/lib/snapcast snapcast; \ adduser --quiet --ingroup nogroup --system --no-create-home --home /var/lib/snapserver snapserver; \
fi; \ fi; \
@ -208,5 +208,5 @@ uninstallsystemd:
systemctl daemon-reload; \ systemctl daemon-reload; \
deluser: deluser:
@deluser --quiet --system snapcast > /dev/null || true @deluser --quiet --system snapserver > /dev/null || true

View file

@ -32,9 +32,9 @@ Config::Config()
{ {
string dir; string dir;
if (getenv("HOME") == NULL) if (getenv("HOME") == NULL)
dir = "/var/lib/snapcast/"; dir = "/var/lib/snapserver/";
else else
dir = getenv("HOME") + string("/.config/snapcast/"); dir = getenv("HOME") + string("/.config/snapserver/");
int status = mkdirRecursive(dir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); int status = mkdirRecursive(dir.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
if ((status != 0) && (errno != EEXIST)) if ((status != 0) && (errno != EEXIST))
throw SnapException("failed to create settings directory: \"" + dir + "\": " + cpt::to_string(errno)); throw SnapException("failed to create settings directory: \"" + dir + "\": " + cpt::to_string(errno));

View file

@ -45,12 +45,18 @@ fi
# #
do_start() do_start()
{ {
PIDDIR=$(dirname "$PIDFILE")
if [ ! -d "$PIDDIR" ]; then
mkdir -m 0755 $PIDDIR
chown snapserver:nogroup $PIDDIR
fi
# Return # Return
# 0 if daemon has been started # 0 if daemon has been started
# 1 if daemon was already running # 1 if daemon was already running
# 2 if daemon could not be started # 2 if daemon could not be started
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --chuid snapcast --test > /dev/null || return 1 start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" --test > /dev/null || return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --chuid snapcast -- $SNAPSERVER_OPTS || return 2 start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" -- $SNAPSERVER_OPTS || return 2
# Add code here, if necessary, that waits for the process to be ready # Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend # to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time. # on this one. As a last resort, sleep for some time.

View file

@ -0,0 +1,16 @@
#!/bin/sh
set -e
umask 0022
ACTION="$1"
VERSION="$2"
if [ "$ACTION" = "configure" ]; then
# add the snapserver user
if ! getent passwd snapserver >/dev/null; then
adduser --quiet --ingroup nogroup --system --no-create-home snapserver
fi
fi
#DEBHELPER#

View file

@ -0,0 +1,17 @@
#!/bin/sh
set -e
if [ "$1" = "purge" ]; then
# clean up all statoverrides that belonged to snapserver, so the
# snapserver system user can be removed cleanly
for i in $(dpkg-statoverride --list | awk '/^snapserver / {print $4}'); do
if dpkg-statoverride --list --quiet "$i" >/dev/null; then
dpkg-statoverride --force --quiet --remove "$i"
fi
done
deluser --quiet --system snapserver > /dev/null || true
fi
#DEBHELPER#

View file

@ -144,7 +144,7 @@ int main(int argc, char* argv[])
if (daemonOption.isSet()) if (daemonOption.isSet())
{ {
#ifdef HAS_DAEMON #ifdef HAS_DAEMON
daemonize("snapcast", "audio", "/var/run/snapserver/pid"); daemonize("snapserver", "nogroup", "/var/run/snapserver/pid");
if (processPriority < -20) if (processPriority < -20)
processPriority = -20; processPriority = -20;
else if (processPriority > 19) else if (processPriority > 19)