My configuration and packages for Slackware
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.6 KiB

#!/bin/sh
#
# /etc/rc.d/rc.psd
#
# Start/stop profile-sync-daemon.
#
# This script enables and disables profile-sync-daemon for selected users.
# You can either define users in the $USERS array,
# or have this script scan for them and save them in $USERS_CACHE.
USERS=""
USERS_CACHE="/run/psd-users.cache"
scan_users() {
rm -f "$USERS_CACHE"
for user in $(getent passwd | cut -d: -f1); do
group="$(getent passwd $user | cut -d: -f4)"
home="$(getent passwd $user | cut -d: -f6)"
shell="$(getent passwd $user | cut -d: -f7)"
if [ "$group" != "0" -a "$home" -a "$home" != "/" -a "$(grep $shell /etc/shells)" ]; then
config="$(su - $user -c 'echo $XDG_CONFIG_HOME')"
[ ! "$config" ] && config="$home/.config"
if [ -f "$config/psd/psd.conf" ]; then
echo "$user" >> "$USERS_CACHE"
fi
fi
done
}
get_users() {
# If $USERS is empty, try to create it based on what users have an existing $XDG_CONFIG_HOME/psd/psd.conf
if [ ! "$USERS" ]; then
if [ ! -f "$USERS_CACHE" ]; then
scan_users
fi
cat "$USERS_CACHE"
else
echo "$USERS"
fi
}
start_psd() {
if [ -x /usr/bin/psd ]; then
echo "Starting/Resyncing Profile-sync-daemon..."
for user in $(get_users); do
su - $user -c 'psd resync'
done &
fi
}
stop_psd() {
if [ -x /usr/bin/psd ]; then
echo "Stoppping Profile-sync-daemon..."
for user in $(get_users); do
su - $user -c 'psd unsync'
done
fi
}
case "$1" in
'start')
start_psd
;;
'stop')
stop_psd
;;
'scan_users')
scan_users
;;
*)
echo "Usage: $0 start|stop|scan_users"
esac