123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:output method = "text" />
- <xsl:strip-space elements="*" />
-
- <xsl:template match="iptables-rules/table/chain/rule/conditions/*">
-
- <xsl:if test="name() != 'match'">
- <xsl:text> -m </xsl:text><xsl:value-of select="name()"/>
- </xsl:if>
- <xsl:apply-templates select="node()"/>
- </xsl:template>
-
- <xsl:template match="iptables-rules/table/chain/rule/actions|table/chain/rule/conditions">
- <xsl:apply-templates select="*"/>
- </xsl:template>
- <xsl:template match="iptables-rules/table/chain/rule/actions/goto">
- <xsl:text> -g </xsl:text>
- <xsl:apply-templates select="*"/>
- <xsl:text>
</xsl:text>
- </xsl:template>
- <xsl:template match="iptables-rules/table/chain/rule/actions/call">
- <xsl:text> -j </xsl:text>
- <xsl:apply-templates select="*"/>
- <xsl:text>
</xsl:text>
- </xsl:template>
-
- <xsl:template match="iptables-rules/table/chain/rule/actions/*">
- <xsl:text> -j </xsl:text><xsl:value-of select="name()"/>
- <xsl:apply-templates select="*"/>
- <xsl:text>
</xsl:text>
- </xsl:template>
-
-
- <xsl:template match="iptables-rules/table/chain/rule/actions//*|iptables-rules/table/chain/rule/conditions//*" priority="0">
- <xsl:if test="@invert=1"><xsl:text> !</xsl:text></xsl:if>
- <xsl:text> -</xsl:text>
-
- <xsl:if test="string-length(name())>1">
- <xsl:text>-</xsl:text>
- </xsl:if>
- <xsl:value-of select="name()"/>
- <xsl:text> </xsl:text>
- <xsl:apply-templates select="node()"/>
- </xsl:template>
- <xsl:template match="iptables-rules/table/chain/rule/actions/call/*|iptables-rules/table/chain/rule/actions/goto/*">
- <xsl:value-of select="name()"/>
-
- <xsl:apply-templates select="node()"/>
- </xsl:template>
-
- <xsl:template name="rule-head">
- <xsl:if test="string-length(@packet-count)+string-length(@byte-count)">
- <xsl:call-template name="counters"><xsl:with-param name="node" select="."/></xsl:call-template>
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:text>-A </xsl:text>
- <xsl:value-of select="../@name" />
- <xsl:apply-templates select="conditions"/>
- </xsl:template>
-
- <xsl:template match="iptables-rules/table/chain/rule">
- <xsl:choose>
- <xsl:when test="count(actions/*)>0">
- <xsl:for-each select="actions/*">
-
- <xsl:for-each select="../..">
- <xsl:call-template name="rule-head"/>
- </xsl:for-each>
-
- <xsl:apply-templates select="."/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
-
- <xsl:call-template name="rule-head"/>
- <xsl:text>
</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <xsl:template match="iptables-rules/table">
- <xsl:text># Generated by iptables.xslt
</xsl:text>
- <xsl:text>*</xsl:text><xsl:value-of select="@name"/><xsl:text>
</xsl:text>
-
- <xsl:for-each select="chain">
- <xsl:text>:</xsl:text>
- <xsl:value-of select="@name"/>
- <xsl:text> </xsl:text>
- <xsl:choose>
- <xsl:when test="not(string-length(@policy))"><xsl:text>-</xsl:text></xsl:when>
- <xsl:otherwise><xsl:value-of select="@policy"/></xsl:otherwise>
- </xsl:choose>
- <xsl:text> </xsl:text>
- <xsl:call-template name="counters"><xsl:with-param name="node" select="."/></xsl:call-template>
- <xsl:text>
</xsl:text>
- </xsl:for-each>
-
- <xsl:apply-templates select="node()"/>
- <xsl:text>COMMIT
# Completed
</xsl:text>
- </xsl:template>
-
- <xsl:template name="counters">
- <xsl:param name="node"/>
- <xsl:text>[</xsl:text>
- <xsl:if test="string-length($node/@packet-count)"><xsl:value-of select="$node/@packet-count"/></xsl:if>
- <xsl:if test="string-length($node/@packet-count)=0">0</xsl:if>
- <xsl:text>:</xsl:text>
- <xsl:if test="string-length($node/@byte-count)"><xsl:value-of select="$node/@byte-count"/></xsl:if>
- <xsl:if test="string-length($node/@byte-count)=0">0</xsl:if>
- <xsl:text>]</xsl:text>
- </xsl:template>
-
-
- <xsl:template match="@*|node()">
- <xsl:copy>
-
- <xsl:apply-templates select="@*"/>
- <xsl:apply-templates select="node()"/>
- </xsl:copy>
- </xsl:template>
- </xsl:transform>
|