sed -i -e "s@[;]*include_path = \"\.:.*\"@include_path = \"$include_path\"@" $php_ini
# Set open_basedir so as to avoid leaks
- open_basedir="$DocumentRoot:/etc/planetlab/php:/usr/share/plc_api/php:/var/log/myslice:/var/tmp/bootmedium:/tmp"
+ open_basedir="$DocumentRoot:/etc/planetlab/php:/usr/share/plc_api/php:/var/log/myslice:/var/tmp/bootmedium:/var/log/bm:/tmp"
sed -i -e "s@[;]*open_basedir =.*@open_basedir = \"$open_basedir\"@" $php_ini
# for php-5.3 under fedora12, otherwise issues tons of warning messages
# Disable default Listen directive
sed -i -e '/^Listen/d' $httpd_conf
+ plc_api_path_noslash=$(echo $PLC_API_PATH | sed -e s,/,,g)
# Set the port numbers
for server in WWW API BOOT ; do
enabled=PLC_${server}_ENABLED
http_port=PLC_${server}_PORT
https_port=PLC_${server}_SSL_PORT
-# # API should always be accessed via SSL
-# if [ "$server" = "API" ] ; then
-# https_port=${!http_port}
-# http_port=
-# fi
+ # API should always be accessed via SSL
+ if [ "$server" = "API" ] ; then
+ https_port=${!http_port}
+ http_port=
+ fi
+
+ echo "# DBG server=$server hostname=${!hostname} http_port=${!http_port} https_port=${!https_port}"
# Check if we are already listening on these ports
skip_http=0
Redirect /planetlab https://$PLC_WWW_HOST:$PLC_WWW_SSL_PORT/planetlab
# as a matter of fact most xmlrpc clients won't follow the redirection
# so this is mostly rethorical, but just in case...
- Redirect /$PLC_API_PATH https://$PLC_WWW_HOST:$PLC_WWW_SSL_PORT/$PLC_API_PATH
+ Redirect /$plc_api_path_noslash https://$PLC_WWW_HOST:$PLC_WWW_SSL_PORT/$plc_api_path_noslash
</VirtualHost>
+
EOF
fi
-e "s/^Listen .*/Listen ${!https_port}/" \
-e "s/<VirtualHost _default_:.*>/<VirtualHost _default_:${!https_port}>/" \
$ssl_conf
- # this is used to locate the right certificates
- server_lower=$(echo $server | tr 'A-Z' 'a-z')
- cat <<EOF
+ # this is used to locate the right certificates
+ server_lower=$(echo $server | tr 'A-Z' 'a-z')
+
+ # which one is used is currently configured in myplc.spec,
+ # with mod_python preferred
+ if rpm -q mod_python >& /dev/null ; then
+ configure_for_mod_python=true
+ elif rpm -q mod_wsgi >& /dev/null ; then
+ configure_for_mod_wsgi=true
+ else
+ echo "Requires mod_python or mod_wsgi.... exiting"
+ exit 1
+ fi
+
+ # It would be tempting to use <IfModule> here
+ # but early tests showed this could be tricky/fragile
+ # So let's hard-wire it for one module
+ # A lot of trial-and -error was involved in getting this that way...
+
+ if [ -n "$configure_for_mod_python" ] ; then
+#################### for mod_python
+ cat <<EOF
+# mod_python location
+<Location /PLCAPI/>
+ SetHandler mod_python
+ PythonPath "sys.path + ['/usr/share/plc_api']"
+ PythonHandler apache.ModPython
+</Location>
+EOF
+
+ elif [ -n "$configure_for_mod_wsgi" ] ; then
+#################### for mod_wsgi
+ cat <<EOF
# create wsgi socket where we have the permission
WSGISocketPrefix run/wsgi
<VirtualHost *:${!https_port}>
- WSGIScriptAlias /$PLC_API_PATH /usr/share/plc_api/wsgi/plc.wsgi
-# xxx would be cool to be able to tweak this through config
- WSGIDaemonProcess plcapi-wsgi-ssl user=apache group=apache processes=1 threads=25
- WSGIProcessGroup plcapi-wsgi-ssl
-
# SSL
SSLEngine On
SSLCertificateFile /etc/planetlab/${server_lower}_ssl.crt
SSLCertificateKeyFile /etc/planetlab/${server_lower}_ssl.key
SSLCertificateChainFile /etc/planetlab/${server_lower}_ca_ssl.crt
+ WSGIScriptAlias /$plc_api_path_noslash /usr/share/plc_api/apache/plc.wsgi
+# xxx would be cool to be able to tweak this through config
+ WSGIDaemonProcess plcapi-wsgi-ssl user=apache group=apache processes=1 threads=25
+ WSGIProcessGroup plcapi-wsgi-ssl
+
+ <Directory "/usr/share/plc_api/apache">
+ Options +ExecCGI
+ $(apache_allow)
+ </Directory>
+
</VirtualHost>
EOF
+ fi
fi
done >$plc_conf
cat <<EOF
# mod_wsgi location
<Location $PLC_API_PATH>
- Deny from all
+ $(apache_forbid)
</Location>
EOF
fi