home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2006 May / PCpro_2006_05.ISO / files / free_security / languard / languardnss7.exe / hostsrunsqlsubrep.xsl6 < prev    next >
Encoding:
Extensible Markup Language  |  2005-04-20  |  10.0 KB  |  249 lines

  1. <?xml version="1.0" encoding="windows-1252"?>
  2. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:z="#RowsetSchema">
  3.     <xsl:output method="html" indent="yes" encoding="UTF-8"/>
  4.     <xsl:param name="GraphicsPath"/>
  5.     
  6.     <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  7.     <xsl:template match="/">
  8.         <html>
  9.             <head>
  10.                 <title>LNSS Reporter</title>
  11.                 <style>
  12.                     <xsl:value-of select="document('css.xml')/stylesheets/style[@id='default']"/>
  13.                 </style>
  14.                 
  15.                 <script language='VBScript'>
  16.                     <![CDATA[
  17.                         function toggle( obj, img )
  18.                             set oImg = document.all.item(img)
  19.                             set oObj = document.all.item(obj)
  20.  
  21.                             if oObj.style.display = "none" then
  22.                                 oObj.style.display = ""
  23.                                 OImg.src = "]]><xsl:value-of select="$GraphicsPath"/><![CDATA[\minus.gif"
  24.                             else
  25.                                 oObj.style.display = "none"
  26.                                 oImg.src = "]]><xsl:value-of select="$GraphicsPath"/><![CDATA[\plus.gif"
  27.                             end if
  28.                         end function
  29.                     ]]>
  30.                 </script>
  31.             </head>
  32.             
  33.             <!-- body begins -->
  34.             <body bgcolor="#ffffff" topmargin="0" leftmargin="0" rightmargin="0">
  35.  
  36.             <!-- top bar -->
  37.             <table width="100%" border="0" cellpadding="0" cellspacing="0" height="0">
  38.             <tr>
  39.             <td>
  40.             <div align="left"><img src="{$GraphicsPath}\top_menu_left.gif" border="0" hspace="10" alt="GFI"/></div>
  41.             </td>
  42.             <td>
  43.             <div align="right"><img src="{$GraphicsPath}\top_menu_right.jpg" border="0"/></div>
  44.             </td>
  45.             </tr>
  46.             <tr>
  47.             <td bgcolor="#000000" colspan="2" height="2"></td>
  48.             </tr>
  49.             </table>
  50.             
  51.             <!-- Table that encapsulates all other details -->
  52.             <table cellpadding="0" cellspacing="0" style="border-collapse: collapse" border="0" width="98%" align="center">
  53.             
  54.             <tr><td>
  55.             
  56.                 <!-- report title -->
  57.                 <div align="center">
  58.                     <table cellpadding="0" cellspacing="0" border="0" width="100%" style="border-collapse: collapse">
  59.                     <tr><td class="MainHeading">Hosts Running SQL Sub-Report</td></tr>
  60.                     </table>
  61.                 </div>
  62.                                 
  63.                 <xsl:for-each select="/xml/rs:data/z:row[(position()=1) or (@CreatedDate != preceding-sibling::z:row[position()=1]/@CreatedDate)]">
  64.                     <xsl:call-template name="CreatedOn"/>
  65.                 </xsl:for-each>
  66.                 
  67.             </td></tr>
  68.             
  69.             </table>
  70.                     
  71.             <table width="100%" border="0" cellpadding="0" cellspacing="0" height="0">
  72.             <tr>
  73.             <td bgcolor="#000000" width="10"></td>
  74.             <td bgcolor="#000000" align="left" valign="center" height="20" class="normal" style="color:white"><xsl:text disable-output-escaping="yes">&copy; 2005. All rights reserved. GFI Software Ltd.</xsl:text></td>
  75.             </tr>
  76.             </table>
  77.             
  78.             </body>
  79.         </html>
  80.     </xsl:template>
  81.     
  82.     <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  83.     <!-- created to override default template -->
  84.     <xsl:template match="text() | @*">
  85.         <!-- do nothing -->
  86.     </xsl:template>
  87.     
  88.     <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  89.     <xsl:template match="s:AttributeType">
  90.         <td class="HEADERS">
  91.             <xsl:value-of select="@name"/>
  92.         </td>
  93.     </xsl:template>
  94.     
  95.     <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  96.     <xsl:template name="CreatedOn">
  97.         <xsl:variable name="CreateDate" select="@CreatedDate"/>
  98.         <xsl:variable name="position" select="position()"/>
  99.         
  100.         <xsl:if test="position()=1 or (@CreatedDate != preceding-sibling::z:row[position()=1]/@CreatedDate)">
  101.         
  102.             <div align="center">
  103.                 <table cellpadding="0" cellspacing="1" border="0" width="100%" style="border-collapse: collapse;">
  104.                 <tr>
  105.                     <td width='33%' class="MainTableHeader">Date and Time of Scan</td>
  106.                     <td width='33%' class="MainTableHeader">Number of Hosts</td>
  107.                     <td width='33%' class="MainTableHeader">Scan Target</td>
  108.                 </tr>
  109.                 <tr>
  110.                     <td align="left" class="TableItem0" valign="top">
  111.                         <!--xsl:value-of select="@CreatedDate"/-->
  112.                         <xsl:value-of select="concat(substring-before(@CreatedDate, 'T'), '    ', substring-after(@CreatedDate,'T'))"/>
  113.                     </td>
  114.                     <td align="left" class="TableItem0" valign="top"><xsl:value-of select="@IPCount"/></td>
  115.                     <td align="left" class="TableItem0" valign="top"><xsl:value-of select="@ScanTarget"/></td>
  116.                 </tr>
  117.                 </table>
  118.             </div>
  119.             
  120.             <br/>
  121.             
  122.             <div align="center">
  123.                 <table cellpadding="0" cellspacing="1" border="0" width="100%" style="border-collapse: collapse">
  124.                 <tr>
  125.                     <td width="10" class="TableHeader"></td>
  126.                     <td class="TableHeader">Machines</td>
  127.                 </tr>
  128.                 
  129.                 <tr>
  130.                     <td/>
  131.                     <td>
  132.                         <!-- machines here -->
  133.                         <table cellpadding='0' cellspacing='1' border='0' width='100%' style='border-collapse: collapse;'>
  134.                             <tr>
  135.                                 <td width="10" class="TableHeader"></td>
  136.                                 <td class="TableHeader">IP Address</td>
  137.                                 <td class="TableHeader">Machine Name</td>
  138.                                 <td class="TableHeader">MAC Address</td>
  139.                                 <td class="TableHeader">Domain</td>
  140.                                 <td class="TableHeader">Operating System</td>
  141.                                 <td class="TableHeader">Service Pack</td>
  142.                             </tr>
  143.                             
  144.                             <xsl:for-each select="/xml/rs:data/z:row[(@CreatedDate=$CreateDate)and((position()=1) or (@CreatedDate != preceding-sibling::z:row    [position()=1]/@CreatedDate) or (@IP != preceding-sibling::z:row[position()=1]/@IP))]">
  145.                                 <xsl:call-template name="IP">
  146.                                     <xsl:with-param name="index" select="$position"/>
  147.                                 </xsl:call-template>
  148.                             </xsl:for-each>
  149.                         </table>
  150.                     </td>
  151.                 </tr>    
  152.                 </table>
  153.             </div>
  154.             
  155.             <hr/><br/>
  156.             
  157.         </xsl:if>
  158.     </xsl:template>
  159.     
  160.     <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  161.     <xsl:template name="IP">
  162.         <xsl:param name="index"/>
  163.         <xsl:variable name="CreateDate" select="@CreatedDate"/>
  164.         <xsl:variable name="CurrentIP" select="@IP"/>
  165.         
  166.         <xsl:if test="position()=1 or (@CreatedDate != preceding-sibling::z:row[position()=1]/@CreatedDate) or (@IP != preceding-sibling::z:row[position()=1]/@IP)">        
  167.             <tr>
  168.                 <td width='10' class="TableItem{position() mod 2}"><div style="cursor: hand;" onclick="toggle 'Mach{$index}{position()}', 'Mach{$index}{position()}Img'"><img id="Mach{$index}{position()}Img" src="{$GraphicsPath}\minus.gif" title='SQL Server' alt='SQL Server' height='12' width='12'/></div></td>
  169.                 <td class="TableItem{position() mod 2}"><xsl:value-of select="@IP"/></td>
  170.                 <td class="TableItem{position() mod 2}"><xsl:value-of select="@HostName"/></td>
  171.                 <td class="TableItem{position() mod 2}"><xsl:value-of select="@MAC"/></td>
  172.                 <td class="TableItem{position() mod 2}"><xsl:value-of select="@Domain"/></td>
  173.                 <td class="TableItem{position() mod 2}"><xsl:value-of select="@OS"/></td>
  174.                 <td class="TableItem{position() mod 2}"><xsl:value-of select="@ServPack"/></td>
  175.             </tr>                
  176.         </xsl:if>
  177.         
  178.         <xsl:variable name="IDStr">Mach<xsl:value-of select="$index"/><xsl:value-of select="position()"/></xsl:variable>
  179.         
  180.         <tr id='Mach{$index}{position()}'>
  181.             <td/>
  182.             <td colspan='6'>
  183.                 <table cellpadding='0' cellspacing='1' border='0' width='100%' style='border-collapse: collapse;'>
  184.                     <tr>
  185.                         <td width="10" class="TableHeader"/>
  186.                         <td class="TableHeader">SQL Server</td>
  187.                     </tr>
  188.                     <xsl:for-each select="/xml/rs:data/z:row[(@CreatedDate=$CreateDate)and(@IP=$CurrentIP)and((position()=1) or (@CreatedDate != preceding-sibling::z:row[position()=1]/@CreatedDate) or (@IP != preceding-sibling::z:row[position()=1]/@IP) or (@ProdName != preceding-sibling::z:row[position()=1]/@ProdName))]">
  189.                         <xsl:call-template name="SQL">
  190.                             <xsl:with-param name="index"><xsl:value-of select="$IDStr"/></xsl:with-param>
  191.                         </xsl:call-template>
  192.                     </xsl:for-each>
  193.                 </table>
  194.             </td>
  195.         </tr>
  196.  
  197.     </xsl:template>
  198.     
  199.     <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
  200.     <xsl:template name="SQL">
  201.         <xsl:param name="index"/>
  202.         <xsl:variable name="CreateDate" select="@CreatedDate"/>
  203.         <xsl:variable name="CurrentIIS" select="@ProdName"/>
  204.         <xsl:variable name="CurrentIP" select="@IP"/>
  205.         
  206.         <xsl:if test="position()=1 or (@CreatedOn != preceding-sibling::z:row[position()=1]/@CreatedOn) or (@IP != preceding-sibling::z:row[position()=1]/@IP) or (@ProdName != preceding-sibling::z:row[position()=1]/@ProdName)">
  207.             <tr>
  208.                 <td class="TableItem0"><div style="cursor: hand;" onclick="toggle 'SQL{$index}{position()}', 'SQL{$index}{position()}Img'"><img id="SQL{$index}{position()}Img" src="{$GraphicsPath}\plus.gif" title='Vulnerabilities' alt='Vulnerabilities' height='12' width='12'/></div></td>
  209.                 <td class="TableItem0"><xsl:value-of select="@ProdName"/></td>
  210.             </tr>
  211.             
  212.             <xsl:variable name="IDStr">SQL<xsl:value-of select="$index"/><xsl:value-of select="position()"/></xsl:variable>
  213.             
  214.             <tr id='SQL{$index}{position()}' style='display:none;'>
  215.                 <td/>
  216.                 <td>
  217.                     <!-- Missing Hotfixes -->
  218.                     <table cellpadding='0' cellspacing='1' border='0' width='100%' style='border-collapse: collapse;'>
  219.                         <tr>
  220.                             <td class="TableHeader" width='200'>Missing Hotfix Name</td>
  221.                             <td class="TableHeader">Details</td>
  222.                             <td class="TableHeader">Posted Date</td>
  223.                         </tr>
  224.                         
  225.                         <xsl:for-each select="/xml/rs:data/z:row[(@CreatedDate=$CreateDate)and(@IP=$CurrentIP)and(@ProdName=$CurrentIIS)]">
  226.                             <xsl:call-template name="Name"/>
  227.                         </xsl:for-each>
  228.                         
  229.                         <tr>
  230.                             <td height="7"/>
  231.                             <td height="7"/>
  232.                         </tr>
  233.                     </table>
  234.                 </td>
  235.             </tr>
  236.         </xsl:if>
  237.     </xsl:template>
  238.     
  239.     <!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
  240.     <xsl:template name="Name">
  241.         <tr>
  242.             <td align="left" class="TableItem{position() mod 2}" title='{@URL}'><a href='{@URL}' target='_blank'><xsl:value-of select="@Name"/></a></td>
  243.             <td align="left" class="TableItem{position() mod 2}"><xsl:value-of select="@Description"/></td>            
  244.             <td align="left" class="TableItem{position() mod 2}"><xsl:value-of select="@DatePosted"/></td>            
  245.         </tr>
  246.     </xsl:template>
  247.     
  248. </xsl:stylesheet>
  249.