Here's the corresponding template that I modified, that shows the "higher 
level" issues, by vulnerability, as opposed to by host.

It strips out the alert IDs that have no Hole/Info level warnings at the 
top, and just shows you the "meat".

1st pair of changes: Strips out the unused IDs at the top of the report
2nd pair of changes: Filters out the note level issues from the report 
body.

Brief how-to:
There are 3 classifications: INFO, HOLE, and NOTE, shown in the XML. 
"<xsl:if >" checks for the condition, and if "test" is true, does the 
tasks/formatting, etc, until </xsl:if>

I used: <xsl:if test = "(level='INFO') or (level='HOLE')">
which checks for the level (a variable in the XML file) being equal to 
either "INFO" or "HOLE".  I could have restricted the report to just the 
highest level of issues by removing the "INFO line, and leaving "hole", as 
follows:  <xsl:if test = "level='HOLE'">
The parens () are included because of the "OR" statement.  Position/syntax 
matter.  (i.e. ("level='INFO'") or ("level='HOLE'") failed when I tried, 
as I recall)

<xsl:if> needs to go after the <xsl:for-each> -- and if a <xsl:sort 
select> is present, after that as well.

The XML is below: cut,paste, (and remove the added >>>), and save. :-) 

<?xml version='1.0' encoding='utf-8' ?>
<!--Copyright 2003-2004(C) Tenable Network Security-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
version="1.0">
<xsl:import href="report_lib.xsl"/>
<xsl:output method="html" indent="yes"/>

<xsl:key name="report" match="host/*/alert" use="id"/>

<xsl:template match="/">
        <xsl:apply-templates/>
</xsl:template>

<xsl:template name="_report_summary">
        <tr>
                <td width="100%" class="border">
                <div class="summary_text">
                        <xsl:for-each 
select="host/*/alert[generate-id(.)=generate-id(key('report',id))]">
                        <xsl:sort select="id" order="ascending"/>
>>>                     <xsl:if test = "(level='INFO') or (level='HOLE')">
                                <a>
                                <xsl:attribute 
name="href"><![CDATA[#]]><xsl:value-of select="id"/></xsl:attribute>
                                <xsl:value-of select="id"/>
                                </a>
 
                                <!--white space-->
                                <xsl:text> </xsl:text>
>>>                     </xsl:if>
                        </xsl:for-each>
                </div>
                </td>
        </tr>
</xsl:template>

<xsl:template match="results">

        <xsl:call-template name="report_html_head"/>

        <body>
                <table width="100%" cellspacing="0" cellpadding="0">
                        <tr>
                                <td align="center" colspan="2" 
width="100%">
                                        <table width="90%" height="100%" 
cellspacing="0" align="center">
 
                                                <xsl:call-template 
name="report_header"/>
                                                <xsl:call-template 
name="report_time"/>
                                                <tr><td 
height="40"></td></tr>
                                                <xsl:call-template 
name="report_target"/>
                                                <xsl:call-template 
name="report_error"/>
                                                <xsl:call-template 
name="_report_summary"/>
                                                <tr><td 
height="40"></td></tr>
 
                                        </table>
                                </td>
                        </tr>
                </table>
 
                <!--Main content-->
                <xsl:for-each 
select="host/*/alert[generate-id(.)=generate-id(key('report',id))]">
                <xsl:sort select="id" order="ascending"/> 
                <xsl:if test = "(level='INFO') or (level='HOLE')"> 
                        <table width="90%" align="center">
 
                                <xsl:call-template 
name="report_sub_header">
                                        <xsl:with-param name="mode" 
select="'view_by_id'"/>
                                </xsl:call-template>

                                <!--Alert-->
                                <xsl:for-each select="key('report',id)">
                                <xsl:sort select="id"/> 
                                        <xsl:for-each select=".">
>>>                                     <xsl:if test = "(level='INFO') or 
(level='HOLE')">
                                                <tr>
                                                <td width="100%">
                                                <table width="100%" 
cellspacing="0" cellpadding="0">
 
                                                <tr>
                                                        <xsl:call-template 
name="report_showhostport">
 <xsl:with-param name="showhost" select="'yes'"/>
 <xsl:with-param name="showport" select="'yes'"/>
 </xsl:call-template>
 
                                                        <td 
class="left_open_border" height="100%">
                                                                <table 
width="100%" height="100%" cellspacing="0" cellpadding="0">

 <xsl:call-template name="report_showalert">
 <xsl:with-param name="donot_print_id" select="'yes'"/>
 </xsl:call-template>

                                                                </table>
                                                        </td> 
                                                </tr>
 
                                                </table>
                                                </td>
                                                </tr> 
                                                <tr><td 
height="5"></td></tr>
>>>                                     </xsl:if>
                                        </xsl:for-each>
                                </xsl:for-each>
 
                        </table>
 
                        <!--Space-->
                        <table width="100%"><tr><td align="right" 
height="40"></td></tr></table>
                </xsl:if>
                </xsl:for-each>

                <xsl:call-template name="report_footer"/>

        </body>
</xsl:template>

</xsl:stylesheet>
_______________________________________________
Nessus mailing list
[email protected]
http://mail.nessus.org/mailman/listinfo/nessus

Reply via email to