#
#
# 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.
#

---
doc_root_dir: "/var/www/{{ gateway_id }}"
user_data_dir: "/var/www/user_data"
# real_user_data_dir is the same as user_data_dir but without symbolic links in it
real_user_data_dir: "{{ user_data_dir }}"
httpd_default_conf_file_location:
 RedHat: "/etc/httpd/conf.d/000-default.conf"
 Debian: "/etc/apache2/sites-available/000-default.conf"
httpd_ssl_conf_file_location:
 RedHat: "/etc/httpd/conf.d/ssl.conf"
 # TODO: Debian file layout is different, so we really need a different ssl.conf for Debian
 Debian: "/etc/apache2/mods-available/ssl.conf"
httpd_default_ssl_vhost_certificate_dir:
 RedHat: "/etc/httpd/ssl"
 Debian: "/etc/apache2/ssl"
httpd_default_ssl_vhost_certificate_location:
 RedHat: "/etc/httpd/ssl/default_vhost.crt"
 Debian: "/etc/apache2/ssl/default_vhost.crt"
httpd_default_ssl_vhost_certificate_key_dir:
 RedHat: "/etc/httpd/ssl/private"
 Debian: "/etc/apache2/ssl/private"
httpd_default_ssl_vhost_certificate_key_location:
 RedHat: "/etc/httpd/ssl/private/default_vhost.key"
 Debian: "/etc/apache2/ssl/private/default_vhost.key"
httpd_name:
 Debian: apache2
 RedHat: httpd

httpd_default_conf_template: "default.conf.j2"
httpd_ssl_conf_template: "ssl.conf.j2"

httpd_default_http_port: 80
httpd_default_https_port: 443
...
