mirror of
https://github.com/badaix/snapcast.git
synced 2025-05-19 20:16:15 +02:00
users for snapclient and snapserver daemon
This commit is contained in:
parent
88cf84aa50
commit
0f2359c971
11 changed files with 64 additions and 22 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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#
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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.
|
||||||
|
|
16
server/debian/snapserver.postinst
Normal file
16
server/debian/snapserver.postinst
Normal 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#
|
17
server/debian/snapserver.postrm
Normal file
17
server/debian/snapserver.postrm
Normal 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#
|
|
@ -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)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue