#!/bin/sh

#  Licensed to the Apache Software Foundation (ASF) under one
#  or more contributor license agreements.  See the NOTICE file
#  distributed with this work for additional information
#  regarding copyright ownership.  The ASF licenses this file
#  to you under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in compliance
#  with the License.  You may obtain a copy of the License at
#  
#    http://www.apache.org/licenses/LICENSE-2.0
#    
#  Unless required by applicable law or agreed to in writing,
#  software distributed under the License is distributed on an
#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#  KIND, either express or implied.  See the License for the
#  specific language governing permissions and limitations
#  under the License.

root=$1
port=$2
sslport=$3

set -x

# Configure an SSL-enabled app server
../../modules/http/httpd-conf $root sca-store.com $port/80 htdocs
../../modules/http/vhost-conf $root

tar -C tmp/ssl -c `../../modules/http/ssl-cert-find tmp/ssl` | tar -C $root -x
../../modules/http/httpd-ssl-conf $root $sslport/443
../../modules/http/vhost-ssl-conf $root

#../../modules/http/httpd-auth-conf $root
../../modules/oauth/oauth-conf $root
../../modules/oauth/oauth-memcached-conf $root localhost 11211
../../modules/oauth/oauth-memcached-conf $root localhost 11212
../../modules/oauth/oauth-memcached-conf $root localhost 11213
../../modules/openid/openid-conf $root
../../modules/openid/openid-step2-conf $root
../../modules/openid/openid-memcached-conf $root localhost 11211
../../modules/openid/openid-memcached-conf $root localhost 11212
../../modules/openid/openid-memcached-conf $root localhost 11213

../../modules/server/server-conf $root
../../modules/python/python-conf $root
cat >>$root/conf/httpd.conf <<EOF
# Configure SCA Composite
SCAContribution `pwd`/shared/
SCAComposite shared.composite

# Configure SCA Composite for mass dynamic virtual hosting
SCAVirtualContribution `pwd`/domains/
SCAVirtualComposite store.composite

EOF

# Aggregate app server logs
category=`basename $root`
../../components/log/scribe-tail-start $category $root/logs/error_log
../../components/log/scribe-tail-start $category $root/logs/access_log

