]> git.pld-linux.org Git - packages/tigervnc.git/blob - vncserver.init
- release 6 (by relup.sh)
[packages/tigervnc.git] / vncserver.init
1 #!/bin/sh
2 #
3 # vncserver     Starts/stop VNC server
4 #
5 # chkconfig:    345 91 35
6 #
7 # description:  Starts and stops vncserver.
8 #               Used to provide remote X administration services.
9 #
10
11 # Source function library
12 . /etc/rc.d/init.d/functions
13
14 # Get network config
15 . /etc/sysconfig/network
16
17 VNCSERVERS=""
18 [ -f /etc/sysconfig/vncserver ] && . /etc/sysconfig/vncserver
19
20 # Check that networking is up.
21 if is_yes "${NETWORKING}"; then
22         if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
23                 msg_network_down vncserver
24                 exit 1
25         fi
26 else
27         exit 0
28 fi
29
30 start() {
31         # Check if the service is already running?
32         if [ -f /var/lock/subsys/vncserver ]; then
33                 msg_already_running vncserver
34                 return
35         fi
36
37         ulimit -S -c 0 >/dev/null 2>&1
38         RETVAL=0
39
40         if [ ! -d /tmp/.X11-unix ]; then
41                 mkdir -m 1777 /tmp/.X11-unix || :
42                 restorecon /tmp/.X11-unix 2>/dev/null || :
43         fi
44
45         NOSERV=1
46         for display in $VNCSERVERS; do
47                 msg_starting "vncserver ($display)"
48                 NOSERV=0
49                 DISP="${display%%:*}"
50                 USER="${display##*:}"
51                 if [ "x$USER" == "xroot" ]; then
52                         fail
53                         echo "-- Do not run vncserver as root!"
54                         continue
55                 fi
56                 VNCUSERARGS="${VNCSERVERARGS[${DISP}]}"
57                 USEREXISTS=`cat /etc/passwd | awk -F: "{ if (\"$USER\"==\\\$1) print \"yes\" }"`
58                 if [ "x$USEREXISTS" != "xyes" ]; then
59                         fail
60                         echo "-- User $USER does not exists!"
61                         continue
62                 fi
63                 USERHOME=`runuser $USER -c 'echo $HOME'`
64                 if [ ! -f "$USERHOME/.vnc/passwd" ]; then
65                         fail
66                         echo "-- No password file found for user $USER!"
67                         continue
68                 fi
69                 export USER VNCUSERARGS
70                 daemon --user ${USER} "vncserver :${DISP} ${VNCUSERARGS}"
71                 RETVAL=$?
72                 [ "$RETVAL" -eq 0 ] && echo $display >> /var/lock/subsys/vncserver
73         done
74 }
75
76 stop() {
77         if [ ! -f /var/lock/subsys/vncserver ]; then
78                 msg_not_running vncserver
79                 return
80         fi
81
82         # Stop daemons.
83         ERRDISP=""
84         for display in `cat /var/lock/subsys/vncserver`
85         do
86                 msg_stopping "vncserver ($display)"
87                 export USER="${display##*:}"
88                 runuser ${USER} -c "vncserver -kill :${display%%:*}" >/dev/null 2>&1
89                 RETVAL=$?
90                 [ "$RETVAL" -eq 0 ] && ok && continue
91                 fail
92                 ERRDISP="$ERRDISP $display"
93         done
94         rm -f /var/lock/subsys/vncserver
95         [ "x$ERRDISP" != "x" ] && echo "$ERRDISP" > /var/lock/subsys/vncserver
96 }
97
98 RETVAL=0
99 # See how we were called.
100 case "$1" in
101   start)
102         start
103         ;;
104   stop)
105         stop
106         ;;
107   restart)
108         stop
109         sleep 5
110         start
111         exit $?
112         ;;
113   status)
114         status Xvnc
115         RETVAL=$?
116         ;;
117   *)
118         msg_usage "$0 {start|stop|restart|status}"
119         exit 3
120 esac
121
122 exit $RETVAL
This page took 0.350568 seconds and 3 git commands to generate.