knows about apache 2.4 new access scheme
[myplc.git] / plc.d / functions
index 5f52e10..58508a3 100644 (file)
@@ -1,7 +1,4 @@
 # -*-Shell-script-*-
-# $Id$
-# $URL$
-#
 # Common functions for PLC startup/shutdown scripts
 #
 # Mark Huang <mlhuang@cs.princeton.edu>
@@ -17,20 +14,17 @@ export PATH=/sbin:/bin:/usr/bin:/usr/sbin
 ERRORS=0
 
 # Count the exit status of the last command
-check ()
-{
+function check () {
     ERRORS=$(($ERRORS+$?))
 }
 
 # Print status header
-dialog ()
-{
+function dialog () {
     echo -n "PLC: $*: " >&3
 }
 
 # Print result
-result ()
-{
+function result () {
     if [ $ERRORS -eq 0 ] ; then
        success "$*" >&3
     else
@@ -40,8 +34,7 @@ result ()
 }
 
 # Start up a program with a plc_ prefix
-plc_daemon ()
-{
+function plc_daemon () {
     base=${1##*/}
 
     # See if it's already running. Look *only* at the pid file.
@@ -76,22 +69,19 @@ plc_daemon ()
 }
 
 # Print IP address of hostname if resolvable
-gethostbyname ()
-{
+function gethostbyname () {
     python -c 'import socket; import sys; print socket.gethostbyname(sys.argv[1])' $1 2>/dev/null
 }
 
 # Forcefully make a symlink
-symlink ()
-{
+function symlink () {
     mkdir -p $(dirname $2)
     rm -f $2
     ln -s $1 $2
 }
 
 # Argument(s) or stdin to lowercase stdout
-lower ()
-{
+function lower () {
     if [ ${#*} -ge 1 ] ; then
        tr A-Z a-z <<<$*
     else
@@ -100,8 +90,7 @@ lower ()
 }
 
 # Argument(s) or stdin to uppercase stdout
-upper ()
-{
+function upper () {
     if [ ${#*} -ge 1 ] ; then
        tr a-z A-Z <<<$*
     else
@@ -110,8 +99,7 @@ upper ()
 }
 
 # Regenerate configuration files
-reload ()
-{
+function plc_reload () {
     force=$1
 
     # Regenerate the main configuration file from default values
@@ -150,6 +138,46 @@ reload ()
     fi
 }
 
+#################### feb 2013 for f18
+# Authorization directives change in apache 2.4
+# http://httpd.apache.org/docs/2.4/upgrading.html#access
+#### up to 2.2, this would be e.g.
+# apachectl -V
+# Server version: Apache/2.2.22 (Unix)
+# <Directory "/usr/share/plc_api/apache">
+# Options      +ExecCGI
+# Order allow,deny
+# Allow from all
+# </Directory>
+#### starting with 2.4 it becomes
+# apachectl -V
+# Server version: Apache/2.4.3 (Fedora)
+# <Directory "/usr/share/plc_api/apache">
+# Options      +ExecCGI
+# Require      all granted
+# </Directory>
+
+function apache_newauth () {
+    apache_version=$(apachectl -V 2> /dev/null | grep 'Server version' | cut -d ' ' -f3 | sed -e 's,^.*/,,')
+    apache_major=$(echo $apache_version | cut -d. -f1)
+    apache_minor=$(echo $apache_version | cut -d. -f2)
+    test "$apache_minor" -ge 4
+}
+function apache_allow () {
+    if apache_newauth; then
+       echo -e "Require all granted"
+    else
+       echo -e "Order allow,deny\n   Allow from all"
+    fi
+}
+function apache_forbid () {
+    if apache_newauth; then
+       echo -e "Require all denied"
+    else
+       echo -e "Order deny,allow\n   Deny from all"
+    fi
+}
+
 # Make copies of stdout and stderr. The plc initscript redirects
 # stdout and stderr to a logfile if -v is not specified.
 [ ! -e /proc/self/fd/3 ] && exec 3>&1