%-
##
## An apache config for static websites.
##
def location_directory(name, location)
if ['amber', 'rack'].include?(location['format'])
File.join(@base_dir, name, 'public')
else
File.join(@base_dir, name)
end
end
#
# document root
#
@document_root = begin
root = '/var/www'
@locations && @locations.each do |name, location|
root = location_directory(name, location) if location['path'] == '/'
end
root.gsub(%r{^/|/$}, '')
end
#
# provider.json
#
# if the domain is a bootstrap domain, we need to expose
# a /provider.json file.
#
bootstrap_domain = scope.lookupvar('site_static::bootstrap_domain')
bootstrap_client = scope.lookupvar('site_static::bootstrap_client')
if ([@aliases]+[@domain]).flatten.include?(bootstrap_domain)
provider_json = \
%(
Alias /provider.json /srv/static/public/provider.json
Header set X-Minimum-Client-Version #{bootstrap_client['min']}
)
else
provider_json = ""
end
#
# locations
#
locations = ""
@locations && @locations.each do |name, location|
location_path = location['path'].gsub(%r{^/|/$}, '')
directory = location_directory(name, location)
local_vars = {'location_path'=>location_path, 'directory'=>directory, 'location'=>location, 'name'=>name}
template_path = File.join(File.dirname(__FILE__), location['format']) + '.erb'
break unless File.exists?(template_path)
locations += \
%(
#
# #{name} (#{location['format']})
#
#{scope.function_templatewlv([template_path, local_vars])}
)
end
#
# allow custom apache config
#
custom_apache_config = if @apache_config
@apache_config.gsub(':percent:','%')
end
-%>
Require all granted
<%- if @tor -%>
##
## Tor
##
ServerName <%= @tor_domain %>
ServerAlias www.<%= @tor_domain %>
Header set X-Frame-Options "deny"
Header always unset X-Powered-By
Header always unset X-Runtime
DocumentRoot "/<%= @document_root %>/"
AccessFileName .htaccess
<%= provider_json %>
<%= custom_apache_config %>
<%= locations %>
<%- end -%>
##
## HTTP
##
ServerName <%= @domain %>
ServerAlias www.<%= @domain %>
<%- @aliases && @aliases.each do |domain_alias| -%>
ServerAlias <%= domain_alias %>
<%- end -%>
<%- if @tls_only -%>
RewriteEngine On
RewriteRule ^.*$ https://<%= @domain -%>%{REQUEST_URI} [R=permanent,L]
<%- else -%>
<%= provider_json %>
<%= custom_apache_config %>
<%= locations %>
<%- end -%>
##
## HTTPS
##
ServerName <%= @domain %>
ServerAlias www.<%= @domain %>
<%- @aliases && @aliases.each do |domain_alias| -%>
ServerAlias <%= domain_alias %>
<%- end -%>
#RewriteLog "/var/log/apache2/rewrite.log"
#RewriteLogLevel 3
Include include.d/ssl_common.inc
<%- if @tls_only -%>
Header always set Strict-Transport-Security: "max-age=15768000;includeSubdomains"
<%- end -%>
Header set X-Frame-Options "deny"
Header always unset X-Powered-By
Header always unset X-Runtime
SSLCertificateKeyFile /etc/x509/keys/<%= @domain %>.key
SSLCertificateFile /etc/x509/certs/<%= @domain %>.crt
RequestHeader set X_FORWARDED_PROTO 'https'
DocumentRoot "/<%= @document_root %>/"
AccessFileName .htaccess
<%= provider_json %>
<%= custom_apache_config %>
<%= locations %>