diff --git a/client/Makefile b/client/Makefile index e9fd1939..d0deab0e 100644 --- a/client/Makefile +++ b/client/Makefile @@ -101,7 +101,7 @@ else install: $(MAKE) adduser $(MAKE) installfiles - install -g audio -o snapcast -d /var/run/$(BIN) + install -g audio -o snapclient -d /var/run/$(BIN) @if [[ `systemctl` =~ -\.mount ]]; then \ $(MAKE) installsystemd; \ @@ -135,8 +135,8 @@ installsysv: /etc/init.d/$(BIN) start; \ adduser: - @if ! getent passwd snapcast >/dev/null; then \ - adduser --quiet --ingroup audio --system --no-create-home --home /var/lib/snapcast snapcast; \ + @if ! getent passwd snapclient >/dev/null; then \ + adduser --quiet --ingroup audio --system --no-create-home --home /var/lib/snapclient snapclient; \ fi; \ ifeq ($(TARGET), MACOS) @@ -184,5 +184,5 @@ uninstallsystemd: systemctl daemon-reload; \ deluser: - @deluser --quiet --system snapcast > /dev/null || true + @deluser --quiet --system snapclient > /dev/null || true diff --git a/client/debian/snapclient.init b/client/debian/snapclient.init index 306723e9..c3c25a4b 100755 --- a/client/debian/snapclient.init +++ b/client/debian/snapclient.init @@ -48,7 +48,7 @@ do_start() PIDDIR=$(dirname "$PIDFILE") if [ ! -d "$PIDDIR" ]; then mkdir -m 0755 $PIDDIR - chown snapcast:audio $PIDDIR + chown snapclient:audio $PIDDIR fi # Return diff --git a/client/debian/snapclient.postinst b/client/debian/snapclient.postinst index 46eb7eab..8469acca 100644 --- a/client/debian/snapclient.postinst +++ b/client/debian/snapclient.postinst @@ -7,9 +7,9 @@ ACTION="$1" VERSION="$2" if [ "$ACTION" = "configure" ]; then - # add the snapcast user - if ! getent passwd snapcast >/dev/null; then - adduser --quiet --ingroup audio --system --no-create-home snapcast + # add the snapclient user + if ! getent passwd snapclient >/dev/null; then + adduser --quiet --ingroup audio --system --no-create-home snapclient fi fi diff --git a/client/debian/snapclient.postrm b/client/debian/snapclient.postrm index 2f11cab3..f08b466b 100644 --- a/client/debian/snapclient.postrm +++ b/client/debian/snapclient.postrm @@ -3,15 +3,15 @@ set -e if [ "$1" = "purge" ]; then - # clean up all statoverrides that belonged to snapcast, so the - # snapcast system user can be removed cleanly - for i in $(dpkg-statoverride --list | awk '/^snapcast / {print $4}'); do + # clean up all statoverrides that belonged to snapclient, so the + # snapclient system user can be removed cleanly + for i in $(dpkg-statoverride --list | awk '/^snapclient / {print $4}'); do if dpkg-statoverride --list --quiet "$i" >/dev/null; then dpkg-statoverride --force --quiet --remove "$i" fi done - deluser --quiet --system snapcast > /dev/null || true + deluser --quiet --system snapclient > /dev/null || true fi #DEBHELPER# diff --git a/client/snapClient.cpp b/client/snapClient.cpp index 6d3ce4fa..3d2f4c4b 100644 --- a/client/snapClient.cpp +++ b/client/snapClient.cpp @@ -160,7 +160,10 @@ int main (int argc, char **argv) if (daemonOption.isSet()) { #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) processPriority = -20; else if (processPriority > 19) diff --git a/server/Makefile b/server/Makefile index 8be327df..32374148 100644 --- a/server/Makefile +++ b/server/Makefile @@ -111,7 +111,7 @@ else install: $(MAKE) adduser $(MAKE) installfiles - install -g audio -o snapcast -d /var/run/$(BIN) + install -g nogroup -o snapserver -d /var/run/$(BIN) @if [[ `systemctl` =~ -\.mount ]]; then \ $(MAKE) installsystemd; \ @@ -149,8 +149,8 @@ installbsd: cp debian/$(BIN).bsd /usr/local/etc/rc.d/$(BIN); \ adduser: - @if ! getent passwd snapcast >/dev/null; then \ - adduser --quiet --ingroup audio --system --no-create-home --home /var/lib/snapcast snapcast; \ + @if ! getent passwd snapserver >/dev/null; then \ + adduser --quiet --ingroup nogroup --system --no-create-home --home /var/lib/snapserver snapserver; \ fi; \ @@ -208,5 +208,5 @@ uninstallsystemd: systemctl daemon-reload; \ deluser: - @deluser --quiet --system snapcast > /dev/null || true + @deluser --quiet --system snapserver > /dev/null || true diff --git a/server/config.cpp b/server/config.cpp index 9f8f1737..aa1686f6 100644 --- a/server/config.cpp +++ b/server/config.cpp @@ -32,9 +32,9 @@ Config::Config() { string dir; if (getenv("HOME") == NULL) - dir = "/var/lib/snapcast/"; + dir = "/var/lib/snapserver/"; 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); if ((status != 0) && (errno != EEXIST)) throw SnapException("failed to create settings directory: \"" + dir + "\": " + cpt::to_string(errno)); diff --git a/server/debian/snapserver.init b/server/debian/snapserver.init index 1bb25844..04f477ab 100755 --- a/server/debian/snapserver.init +++ b/server/debian/snapserver.init @@ -45,12 +45,18 @@ fi # do_start() { + PIDDIR=$(dirname "$PIDFILE") + if [ ! -d "$PIDDIR" ]; then + mkdir -m 0755 $PIDDIR + chown snapserver:nogroup $PIDDIR + fi + # Return # 0 if daemon has been started # 1 if daemon was already running # 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 --chuid snapcast -- $SNAPSERVER_OPTS || return 2 + start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" --test > /dev/null || return 1 + 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 # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time. diff --git a/server/debian/snapserver.postinst b/server/debian/snapserver.postinst new file mode 100644 index 00000000..a579ba62 --- /dev/null +++ b/server/debian/snapserver.postinst @@ -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# diff --git a/server/debian/snapserver.postrm b/server/debian/snapserver.postrm new file mode 100644 index 00000000..275fac56 --- /dev/null +++ b/server/debian/snapserver.postrm @@ -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# diff --git a/server/snapServer.cpp b/server/snapServer.cpp index 846dd1ab..59c2b0b3 100644 --- a/server/snapServer.cpp +++ b/server/snapServer.cpp @@ -144,7 +144,7 @@ int main(int argc, char* argv[]) if (daemonOption.isSet()) { #ifdef HAS_DAEMON - daemonize("snapcast", "audio", "/var/run/snapserver/pid"); + daemonize("snapserver", "nogroup", "/var/run/snapserver/pid"); if (processPriority < -20) processPriority = -20; else if (processPriority > 19)