summaryrefslogtreecommitdiffstats
path: root/httpd-2.1.10-apctl.patch
blob: 4e34ea6bfe623beb8659aa7921472bb9abe471ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107

- fail gracefully if links is not installed on target system
- source sysconfig/httpd for custom env. vars etc.
- make httpd -t work even in SELinux
- refuse to restart into a bad config
- pass $OPTIONS to all $HTTPD invocation

Upstream-HEAD: vendor
Upstream-2.0: vendor
Upstream-Status: Vendor-specific changes for better initscript integration

--- httpd-2.1.10/support/apachectl.in.apctl
+++ httpd-2.1.10/support/apachectl.in
@@ -43,19 +43,25 @@
 # the path to your httpd binary, including options if necessary
 HTTPD='@exp_sbindir@/@progname@'
 #
-# pick up any necessary environment variables
-if test -f @exp_sbindir@/envvars; then
-  . @exp_sbindir@/envvars
-fi
 #
 # a command that outputs a formatted text version of the HTML at the
 # url given on the command line.  Designed for lynx, however other
 # programs may work.  
-LYNX="@LYNX_PATH@ -dump"
+if [ -x "@LYNX_PATH@" ]; then
+  LYNX="@LYNX_PATH@ -dump"
+else
+  LYNX=none
+fi
 #
 # the URL to your server's mod_status status page.  If you do not
 # have one, then status and fullstatus will not work.
 STATUSURL="http://localhost:@PORT@/server-status"
+
+# Source /etc/sysconfig/httpd for $HTTPD setting, etc.
+if [ -r /etc/sysconfig/httpd ]; then
+   . /etc/sysconfig/httpd
+fi
+
 #
 # Set this variable to a command that increases the maximum
 # number of file descriptors allowed per child process. This is
@@ -75,29 +81,51 @@
     ARGV="-h"
 fi
 
+function checklynx() {
+if [ "$LYNX" = "none" ]; then
+   echo "The 'links' package is required for this functionality."
+   exit 8
+fi
+}
+
+function testconfig() {
+# httpd is denied terminal access in SELinux, so run in the
+# current context to get stdout from $HTTPD -t.
+if test -x /usr/sbin/selinuxenabled && /usr/sbin/selinuxenabled; then
+  runcon -- `id -Z` $HTTPD $OPTIONS -t
+else
+  $HTTPD $OPTIONS -t
+fi
+ERROR=$?
+}
+
 case $ARGV in
-start|stop|restart|graceful|graceful-stop)
-    $HTTPD -k $ARGV
-    ERROR=$?
+restart|graceful)
+    if $HTTPD $OPTIONS -t >&/dev/null; then
+       $HTTPD $OPTIONS -k $ARGV
+       ERROR=$?
+    else
+       echo "apachectl: Configuration syntax error, will not run \"$ARGV\":"
+       testconfig
+    fi
     ;;
-startssl|sslstart|start-SSL)
-    echo The startssl option is no longer supported.
-    echo Please edit httpd.conf to include the SSL configuration settings
-    echo and then use "apachectl start".
-    ERROR=2
+start|stop|graceful-stop)
+    $HTTPD $OPTIONS -k $ARGV
+    ERROR=$?
     ;;
 configtest)
-    $HTTPD -t
-    ERROR=$?
+    testconfig
     ;;
 status)
+   checklynx
     $LYNX $STATUSURL | awk ' /process$/ { print; exit } { print } '
     ;;
 fullstatus)
+    checklynx
     $LYNX $STATUSURL
     ;;
 *)
-    $HTTPD $ARGV
+    $HTTPD $OPTIONS $ARGV
     ERROR=$?
 esac