]>
Commit | Line | Data |
---|---|---|
245ad2d3 JR |
1 | #!/bin/sh |
2 | ||
3 | destunitdir=${1:-/tmp} | |
4 | ||
5 | # Do nothing if vncserver target is disabled | |
6 | [ -e /etc/systemd/system/multi-user.target.wants/vncserver.target ] || exit 0 | |
7 | ||
8 | VNCSERVERS="" | |
9 | [ -f /etc/sysconfig/vncserver ] && . /etc/sysconfig/vncserver | |
10 | ||
11 | if [ -d $destunitdir/vncserver.target.wants ]; then | |
12 | rm -f $destunitdir/vncserver.target.wants/vncserver@*.service | |
13 | else | |
14 | mkdir -p $destunitdir/vncserver.target.wants | |
15 | fi | |
16 | ||
17 | for display in $VNCSERVERS; do | |
18 | DISP="${display%%:*}" | |
19 | USER="${display##*:}" | |
20 | if [ "x$USER" == "xroot" ]; then | |
21 | echo "-- Do not run vncserver as root!" | |
22 | continue | |
23 | fi | |
24 | VNCUSERARGS="${VNCSERVERARGS[${DISP}]}" | |
25 | if [ ! id $USER >/dev/null 2>&1 ]; then | |
26 | echo "-- User $USER does not exists!" | |
27 | continue | |
28 | fi | |
29 | USERHOME=$(eval "echo ~$USER") | |
30 | if [ ! -f "$USERHOME/.vnc/passwd" ]; then | |
31 | echo "-- No password file found for user $USER!" | |
32 | continue | |
33 | fi | |
34 | cat >$destunitdir/vncserver.target.wants/vncserver@$DISP.service <<EOF | |
35 | [Unit] | |
36 | Description=Remote desktop service (VNC) on display %i | |
37 | Requires=vncserver.target | |
38 | After=vncserver.target | |
39 | PropagateReloadFrom=vncserver.target | |
40 | ||
41 | [Service] | |
42 | Type=simple | |
43 | ExecStart=/sbin/runuser -l $USER -c "/usr/bin/vncserver -fg :%i $VNCUSERARGS" | |
44 | ExecStop=/sbin/runuser -l $USER -c "/usr/bin/vncserver -kill :%i" | |
45 | ||
46 | [Install] | |
47 | WantedBy=vncserver.target | |
48 | EOF | |
49 | done |