update Mon Feb 8 06:37:00 PST 2010
[pkgsrc.git] / www / spawn-fcgi / files / spawnfcgi.sh
1 #!@RCD_SCRIPTS_SHELL@
2 #
3 # $NetBSD: spawnfcgi.sh,v 1.1.1.1 2010/02/08 14:37:54 joerg Exp $
4 #
5 # PROVIDE: spawnfcgi
6 # BEFORE: apache cherokee lighttpd nginx
7 # REQUIRE: DAEMON
8
9 . /etc/rc.subr
10
11 name="spawnfcgi"
12 rcvar=$name
13 command="@PREFIX@/bin/spawn-fcgi"
14 start_cmd="spawnfcgi_start"
15 stop_cmd="spawnfcgi_stop"
16 status_cmd="spawnfcgi_status"
17 pidfile_base="@VARBASE@/run/spawnfcgi-"
18
19 spawnfcgi_pid()
20 {
21         pidfile=${pidfile_base}$1
22         job_command=$(eval echo \$${name}_${job}_command)
23         rc_pid=`check_pidfile "$pidfile" $job_command`
24 }
25
26 spawnfcgi_start()
27 {
28         rv=0
29         for job in "" $spawnfcgi_jobs; do
30                 [ -z $job ] && continue
31                 spawnfcgi_pid $job
32                 if [ -n "${rc_pid}" ]; then
33                         echo "${name}/$job already running (pid=${rc_pid})."
34                         rv=1
35                         continue
36                 fi
37                 job_command=$(eval echo \$${name}_${job}_command)
38                 job_args=$(eval echo \$${name}_${job}_args)
39                 job_user=$(eval echo \$${name}_${job}_user)
40                 job_cwd=$(eval echo \$${name}_${job}_cwd)
41                 job_socket=$(eval echo \$${name}_${job}_socket)
42                 job_socket_mode=$(eval echo \$${name}_${job}_socket_mode)
43                 job_address=$(eval echo \$${name}_${job}_address)
44                 job_children=$(eval echo \$${name}_${job}_children)
45                 job_php_children=$(eval echo \$${name}_${job}_php_children)
46
47                 if [ -n "${job_php_children}" ]; then
48                         opt_C="-C"
49                 else
50                         opt_C=""
51                 fi
52                 if [ -n "${job_children}" ]; then
53                         opt_F="-F"
54                 else
55                         opt_F=""
56                 fi
57                 if [ -n "${job_socket_mode}" ]; then
58                         opt_m="-m"
59                 else
60                         opt_m=""
61                 fi
62                 if [ -n "${job_socket}" ]; then
63                         opt_s="-s"
64                 else
65                         opt_s=""
66                 fi
67                 if [ -n "${job_address}" ]; then
68                         opt_a="-a"
69                 else
70                         opt_a=""
71                 fi
72                 if [ -n "${job_port}" ]; then
73                         opt_p="-p"
74                 else
75                         opt_p=""
76                 fi
77                 echo "Starting ${name}/$job."
78                 $command -f ${job_command} \
79                     -u ${job_user} \
80                     -d ${job_cwd:-/} \
81                     $opt_C ${job_php_children} \
82                     $opt_F ${job_children} \
83                     $opt_s ${job_socket} \
84                     $opt_m ${job_socket_mode} \
85                     $opt_a ${job_address} \
86                     $opt_p ${job_port} \
87                     -P ${pidfile_base}${job} -- \
88                     ${job_command} ${job_args}
89         done
90         return $rv
91 }
92
93 spawnfcgi_stop()
94 {
95         rv=0
96         for job in "" $spawnfcgi_jobs; do
97                 [ -z $job ] && continue
98                 spawnfcgi_pid $job
99                 if [ -n "${rc_pid}" ]; then
100                         echo "Stopping ${name}/$job."
101                         kill -TERM ${rc_pid}
102                         wait_for_pids ${rc_pid}
103                 else
104                         echo "${name}/$job is not running."
105                         rv=1
106                 fi
107         done
108         return $rv
109 }
110
111 spawnfcgi_status()
112 {
113         rv=0
114         for job in "" $spawnfcgi_jobs; do
115                 [ -z $job ] && continue
116                 spawnfcgi_pid $job
117                 if [ -n "${rc_pid}" ]; then
118                         echo "${name}/${job} is running as pid ${rc_pid}."
119                 else
120                         echo "${name}/${job} is not running."
121                         rv=1
122                 fi
123         done
124         return $rv
125 }
126
127 load_rc_config $name
128 run_rc_command $1