#!/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" if [ -f /etc/default/psd ]; then . /etc/default/psd fi 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 "$(fgrep -x "$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' > /dev/null 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' > /dev/null done fi } case "$1" in 'start') start_psd ;; 'stop') stop_psd ;; 'scan_users') scan_users ;; *) echo "Usage: $0 start|stop|scan_users" esac