#    Copyright 2013 Red Hat, Inc. and/or its affiliates.
#
#    This file is part of jcliff.
#
#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.

name=web
getContents=/subsystem=web:read-resource(recursive=true)
server.preprocess.prepend=/web

match.modifyprop=modify:/web/configuration/*/*
modifyprop.rule.1=/subsystem=web/configuration=${name(..)}:write-attribute(name=${name(.)},value=${value(.)})

match.addConfiguration=add:/web/configuration/*
addConfiguration.rule=/subsystem=web/configuration=${name(.)}:add
addConfiguration.refresh=true

# Connectors
match.addConnector=add:/web/connector/*
addConnector.rule=/subsystem=web/connector=${name(.)}:add(protocol=${value(protocol)},scheme=${value(scheme)},socket-binding=${value(socket-binding)})
addConnector.refresh=true
addConnector.precedence=40

match.modifyConnectorAttribute=modify:/web/connector/*/*
modifyConnectorAttribute.rule=/subsystem=web/connector=${name(..)}:write-attribute(name=${name(.)},value=${value(.)})

match.removeConnector=remove:/web/connector/*
removeConnector.rule=/subsystem=web/connector=${name(.)}:remove
removeConnector.refresh=true

match.undefineConnectorAttribute=undefine:/web/connector/*/*
undefineConnectorAttribute.rule=/subsystem=web/connector=${name(..)}:undefine-attribute(name=${name(.)})

# Valves
match.addValve=add:/web/valve/*
addValve.rule=/subsystem=web/valve=${name(.)}:add(class-name=${value(class-name)},module=${value(module)},enabled=${value(enabled)})

match.removeValve=remove:/web/valve/*
removeValve.rule=/subsystem=web/valve=${name(.)}:remove

match.modifyValve=modify:/web/valve/*/*
modifyValve.rule=/subsystem=web/valve=${name(..)}:write-attribute(name=${name(.)},value=${value(.)})

match.valveIgnoreRule=add:/web/valve/*/*

# virtual-servers
match.addVirtualServer=add:/web/virtual-server/*
addVirtualServer.rule=/subsystem=web/virtual-server=${name(.)}:add(alias=${value(alias)},default-web-module=${value(default-web-module)},enable-welcome-root=${value(enable-welcome-root)})
addVirtualServer.refresh=true
addVirtualServer.precedence=50

match.modifyVirtualServer=modify:/web/virtual-server/*/*
modifyVirtualServer.rule=/subsystem=web/virtual-server=${name(..)}:write-attribute(name=${name(.)},value=${value(.)})
modifyVirtualServer.precedence=60

match.removeVirtualServer=remove:/web/virtual-server/*
removeVirtualServer.rule=/subsystem=web/virtual-server=${name(.)}:remove
removeVirtualServer.refresh=true

match.addRewrite=add:/web/virtual-server/*/rewrite/*
addRewrite.rule=/subsystem=web/virtual-server=${name(../..)}/rewrite=${name(.)}:add(pattern=${value(pattern)},substitution=${value(substitution)},flags=${value(flags)})
addRewrite.refresh=true
addRewrite.precedence=65

match.removeRewrite=remove:/web/virtual-server/*/rewrite/*
removeRewrite.rule=/subsystem=web/virtual-server=${name(../..)}/rewrite=${name(.)}:remove
removeRewrite.refresh=true

match.addRewriteCondition=add:web/virtual-server/*/rewrite/*/condition/*
addRewriteCondition.rule=/subsystem=web/virtual-server=${name(../../../..)}/rewrite=${name(../..)}/condition=${name(.)}:add(pattern=${value(pattern)},test=${value(test)})
addRewriteCondition.refresh=true
addRewriteCondition.precedence=66

match.removeRewriteCondition=remove:/web/virtual-server/*/rewrite/*/condition/*
removeRewriteCondition.rule=/subsystem=web/virtual-server=${name(../../../..)}/rewrite=${name(../..)}/condition=${name(.)}:remove
removeRewriteCondition.refresh=true
removeRewriteCondition.precedence=66

match.modifyRewriteCondition=modify:/web/virtual-server/*/rewrite/*/condition/*/*
modifyRewriteCondition.rule=/subsystem=web/virtual-server=${name(../../../../..)}/rewrite=${name(../../..)}/condition=${name(..)}:write-attribute(name=${name(.)},value=${value(.)})


match.modifyRewrite=modify:/web/virtual-server/*/rewrite/*/*
modifyRewrite.rule=/subsystem=web/virtual-server=${name(../../..)}/rewrite=${name(..)}:write-attribute(name=${name(.)},value=${value(.)})
modifyRewrite.precedence=69


# sso
match.addSSO=add:/web/virtual-server/*/configuration/sso
addSSO.rule=/subsystem=web/virtual-server=${name(../..)}/sso=configuration:add(cache-container=${value(cache-container)},cache-name=${value(cache-name)},reauthenticate=${value(reauthenticate)},domain=${value(domain)})

match.undefineSSO=undefine:/web/virtual-server/*/configuration/sso
undefineSSO.rule=/subsystem=web/virtual-server=${name(../..)}/sso=configuration:remove

match.removeSSO=remove:/web/virtual-server/*/configuration/sso
removeSSO.rule=/subsystem=web/virtual-server=${name(../..)}/sso=configuration:remove

match.modifySSO=modify:/web/virtual-server/*/configuration/sso/*
modifySSO.rule.1=/subsystem=web/virtual-server=${name(../../..)}/sso=configuration:remove
modifySSO.rule.2=/subsystem=web/virtual-server=${name(../../..)}/sso=configuration:add(cache-container=${value(../cache-container)},cache-name=${value(../cache-name)},reauthenticate=${value(../reauthenticate)},domain=${value(../domain)})

match.addSSOIgnore=add:/web/virtual-server/*/configuration/sso/*

#access-log
match.addAccessLog=add:/web/virtual-server/*/configuration/access-log
addAccessLog.rule=/subsystem=web/virtual-server=${name(../..)}/configuration=access-log:add(pattern=${value(pattern)})
addAccessLog.precedence=60
addAccessLog.refresh=true

match.modifyAccessLog=modify:/web/virtual-server/*/configuration/access-log/*
modifyAccessLog.rule=/subsystem=web/virtual-server=${name(../../..)}/configuration=access-log:write-attribute(name=${name(.)},value=${value(.)})
modifyAccessLog.precedence=70

match.removeAccessLog=remove:/web/virtual-server/*/configuration/access-log/*
removeAccessLog.rule=subsystem=web/virtual-server=${name(../..)}/configuration=access-log:remove
removeAccessLog.precedence=60

#access-log/setting/directory
match.addAccessLogSetting=add:/web/virtual-server/*/configuration/access-log/setting/directory
addAccessLogSetting.rule=/subsystem=web/virtual-server=${name(../../../..)}/configuration=access-log/setting=directory:add
addAccessLogSetting.precedence=61
addAccessLogSetting.refresh=true

match.modifyAccessLog=modify:/web/virtual-server/*/configuration/access-log/setting/directory/*
modifyAccessLog.rule=/subsystem=web/virtual-server=${name(../../../../..)}/configuration=access-log/setting=directory:write-attribute(name=${name(.)},value=${value(.)})
addAccessLogSetting.precedence=62


#SSL
match.addSSL=add:/web/connector/*/configuration/ssl/*
addSSL.rule=/subsystem=web/connector=${name(../../..)}/ssl=configuration:add
addSSL.refresh=true
addSSL.precedence=60
 
match.modifySSL=modify:/web/connector/*/configuration/ssl/*
modifySSL.rule=/subsystem=web/connector=${name(../../..)}/ssl=configuration:write-attribute(name=${name(.)},value=${value(.)})

# root level attributes
match.addRootAttribute=add:/web/*
addRootAttribute.rule=/subsystem=web:write-attribute(name=${name(.)},value=${value(.)})

match.modifyRootAttribute=modify:/web/*
modifyRootAttribute.rule=/subsystem=web:write-attribute(name=${name(.)},value=${value(.)})

match.undefineRootAttribute=undefine:/web/*
undefineRootAttribute.rule=/subsystem=web:undefine-attribute(name=${name(.)})
