#
# 10base
#
{
    use esmith::ConfigDB;
    my $db = esmith::ConfigDB->open_ro('proxypass');
    return "" unless $db;
    my @proxypass = $db->get_all_by_prop(type => 'ProxyPass');
    if (@proxypass) {
        $OUT .= "SSLProxyEngine on\n";
    }
    foreach my $path (@proxypass)
    {
	my $key = $path->key;
	my $target = $path->prop('Target');
	unless (defined $target)
	{
	    warn("No Target property specified for ProxyPath $key." .
		" Skipping...");
	    next;
	}
	my $desc = $path->prop('Description');
	if (defined $desc)
	{
	    $OUT .= "# ProxyPass: $key\n";
	    $OUT .= "# Description: $desc\n";
	}
	$OUT .= "ProxyPass\t/$key\t$target\n";
	$OUT .= "ProxyPassReverse\t/$key\t$target\n";
	$OUT .= "<Location /$key>\n";

	my $proxyHTTP = $path->prop('HTTP') || "yes";
	my $proxyHTTPS = $path->prop('HTTPS') || "yes";

	if ( $proxyHTTP eq "no" )
	{
	    $OUT .= "    SSLRequireSSL\n";
	}

	if ( $proxyHTTPS eq "no" )
	{
	    $OUT .= '    SSLRequire (%{HTTPS} eq "NULL")' . "\n";
	}

	my $valid = $path->prop('ValidFrom') || '';
	if ($valid)
	{
	    # Convert from comma separated list to space separated
	    $valid =~ s/,/ /g;
            $OUT .= ' Require ip ' . $valid . "\n";
	}
	$OUT .= "</Location>\n";
    }
}
