diff options
author | Phil Davis <phil.davis@inf.org> | 2015-05-27 22:39:40 +0545 |
---|---|---|
committer | Phil Davis <phil.davis@inf.org> | 2015-05-27 22:39:40 +0545 |
commit | 56463a6c0c2b83ec8dd70d7055b6fdc9b9313200 (patch) | |
tree | d59089839aa96ec9edb4fd4bea749d0d0373981a /usr/local/www/services_snmp.php | |
parent | 36314cbac0de6013b1be41b9ea4241cd1066a727 (diff) | |
download | pfsense-56463a6c0c2b83ec8dd70d7055b6fdc9b9313200.zip pfsense-56463a6c0c2b83ec8dd70d7055b6fdc9b9313200.tar.gz |
Code style services r s w
Diffstat (limited to 'usr/local/www/services_snmp.php')
-rw-r--r-- | usr/local/www/services_snmp.php | 449 |
1 files changed, 232 insertions, 217 deletions
diff --git a/usr/local/www/services_snmp.php b/usr/local/www/services_snmp.php index 4d8b34b..a29ade0 100644 --- a/usr/local/www/services_snmp.php +++ b/usr/local/www/services_snmp.php @@ -1,26 +1,26 @@ -<?php +<?php /* $Id$ */ /* services_snmp.php part of m0n0wall (http://m0n0.ch/wall) - + Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>. All rights reserved. part of pfSense Copyright (C) 2013-2015 Electric Sheep Fencing, LP All rights reserved. - + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - + 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - + 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE @@ -92,9 +92,15 @@ if ($_POST) { /* input validation */ if ($_POST['enable']) { - if (strstr($_POST['syslocation'],"#")) $input_errors[] = gettext("Invalid character '#' in system location"); - if (strstr($_POST['syscontact'],"#")) $input_errors[] = gettext("Invalid character '#' in system contact"); - if (strstr($_POST['rocommunity'],"#")) $input_errors[] = gettext("Invalid character '#' in read community string"); + if (strstr($_POST['syslocation'], "#")) { + $input_errors[] = gettext("Invalid character '#' in system location"); + } + if (strstr($_POST['syscontact'], "#")) { + $input_errors[] = gettext("Invalid character '#' in system contact"); + } + if (strstr($_POST['rocommunity'], "#")) { + $input_errors[] = gettext("Invalid character '#' in read community string"); + } $reqdfields = explode(" ", "rocommunity"); $reqdfieldsn = array(gettext("Community")); @@ -103,12 +109,14 @@ if ($_POST) { $reqdfields = explode(" ", "pollport"); $reqdfieldsn = array(gettext("Polling Port")); do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors); - - + + } if ($_POST['trapenable']) { - if (strstr($_POST['trapstring'],"#")) $input_errors[] = gettext("Invalid character '#' in SNMP trap string"); + if (strstr($_POST['trapstring'], "#")) { + $input_errors[] = gettext("Invalid character '#' in SNMP trap string"); + } $reqdfields = explode(" ", "trapserver"); $reqdfieldsn = array(gettext("Trap server")); @@ -126,18 +134,18 @@ if ($_POST) { /* disabled until some docs show up on what this does. if ($_POST['rwenable']) { - $reqdfields = explode(" ", "rwcommunity"); - $reqdfieldsn = explode(",", "Write community string"); - do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors); + $reqdfields = explode(" ", "rwcommunity"); + $reqdfieldsn = explode(",", "Write community string"); + do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors); } */ - + if (!$input_errors) { $config['snmpd']['enable'] = $_POST['enable'] ? true : false; $config['snmpd']['pollport'] = $_POST['pollport']; - $config['snmpd']['syslocation'] = $_POST['syslocation']; + $config['snmpd']['syslocation'] = $_POST['syslocation']; $config['snmpd']['syscontact'] = $_POST['syscontact']; $config['snmpd']['rocommunity'] = $_POST['rocommunity']; /* disabled until some docs show up on what this does. @@ -148,7 +156,7 @@ if ($_POST) { $config['snmpd']['trapserver'] = $_POST['trapserver']; $config['snmpd']['trapserverport'] = $_POST['trapserverport']; $config['snmpd']['trapstring'] = $_POST['trapstring']; - + $config['snmpd']['modules']['mibii'] = $_POST['mibii'] ? true : false; $config['snmpd']['modules']['netgraph'] = $_POST['netgraph'] ? true : false; $config['snmpd']['modules']['pf'] = $_POST['pf'] ? true : false; @@ -157,9 +165,9 @@ if ($_POST) { $config['snmpd']['modules']['ucd'] = $_POST['ucd'] ? true : false; $config['snmpd']['modules']['regex'] = $_POST['regex'] ? true : false; $config['snmpd']['bindip'] = $_POST['bindip']; - + write_config(); - + $retval = 0; $retval = services_snmpd_configure(); $savemsg = get_std_save_message($retval); @@ -167,7 +175,7 @@ if ($_POST) { } $closehead = false; -$pgtitle = array(gettext("Services"),gettext("SNMP")); +$pgtitle = array(gettext("Services"), gettext("SNMP")); $shortcut_section = "snmp"; include("head.inc"); @@ -176,102 +184,85 @@ include("head.inc"); //<![CDATA[ function check_deps() { if (jQuery('#hostres').prop('checked') == true) { - jQuery('#mibii').prop('checked',true); + jQuery('#mibii').prop('checked', true); } } function enable_change(whichone) { - if( whichone.name == "trapenable" ) - { - if( whichone.checked == true ) - { - document.iform.trapserver.disabled = false; - document.iform.trapserverport.disabled = false; - document.iform.trapstring.disabled = false; - } - else - { - document.iform.trapserver.disabled = true; - document.iform.trapserverport.disabled = true; - document.iform.trapstring.disabled = true; - } + if (whichone.name == "trapenable") { + if (whichone.checked == true) { + document.iform.trapserver.disabled = false; + document.iform.trapserverport.disabled = false; + document.iform.trapstring.disabled = false; + } else { + document.iform.trapserver.disabled = true; + document.iform.trapserverport.disabled = true; + document.iform.trapstring.disabled = true; + } } /* disabled until some docs show up on what this does. - if( whichone.name == "rwenable" ) - { - if( whichone.checked == true ) - { - document.iform.rwcommunity.disabled = false; - } - else - { - document.iform.rwcommunity.disabled = true; - } + if (whichone.name == "rwenable") { + if (whichone.checked == true) { + document.iform.rwcommunity.disabled = false; + } else { + document.iform.rwcommunity.disabled = true; + } } */ - if( document.iform.enable.checked == true ) - { - document.iform.pollport.disabled = false; - document.iform.syslocation.disabled = false; - document.iform.syscontact.disabled = false; - document.iform.rocommunity.disabled = false; - document.iform.trapenable.disabled = false; - /* disabled until some docs show up on what this does. - document.iform.rwenable.disabled = false; - if( document.iform.rwenable.checked == true ) - { - document.iform.rwcommunity.disabled = false; - } - else - { + if (document.iform.enable.checked == true) { + document.iform.pollport.disabled = false; + document.iform.syslocation.disabled = false; + document.iform.syscontact.disabled = false; + document.iform.rocommunity.disabled = false; + document.iform.trapenable.disabled = false; + /* disabled until some docs show up on what this does. + document.iform.rwenable.disabled = false; + if (document.iform.rwenable.checked == true) { + document.iform.rwcommunity.disabled = false; + } else { + document.iform.rwcommunity.disabled = true; + } + */ + if (document.iform.trapenable.checked == true) { + document.iform.trapserver.disabled = false; + document.iform.trapserverport.disabled = false; + document.iform.trapstring.disabled = false; + } else { + document.iform.trapserver.disabled = true; + document.iform.trapserverport.disabled = true; + document.iform.trapstring.disabled = true; + } + document.iform.mibii.disabled = false; + document.iform.netgraph.disabled = false; + document.iform.pf.disabled = false; + document.iform.hostres.disabled = false; + document.iform.ucd.disabled = false; + document.iform.regex.disabled = false; + //document.iform.bridge.disabled = false; + } else { + document.iform.pollport.disabled = true; + document.iform.syslocation.disabled = true; + document.iform.syscontact.disabled = true; + document.iform.rocommunity.disabled = true; + /* + document.iform.rwenable.disabled = true; document.iform.rwcommunity.disabled = true; - } - */ - if( document.iform.trapenable.checked == true ) - { - document.iform.trapserver.disabled = false; - document.iform.trapserverport.disabled = false; - document.iform.trapstring.disabled = false; - } - else - { - document.iform.trapserver.disabled = true; - document.iform.trapserverport.disabled = true; - document.iform.trapstring.disabled = true; - } - document.iform.mibii.disabled = false; - document.iform.netgraph.disabled = false; - document.iform.pf.disabled = false; - document.iform.hostres.disabled = false; - document.iform.ucd.disabled = false; - document.iform.regex.disabled = false; - //document.iform.bridge.disabled = false; - } - else - { - document.iform.pollport.disabled = true; - document.iform.syslocation.disabled = true; - document.iform.syscontact.disabled = true; - document.iform.rocommunity.disabled = true; - /* - document.iform.rwenable.disabled = true; - document.iform.rwcommunity.disabled = true; - */ - document.iform.trapenable.disabled = true; - document.iform.trapserver.disabled = true; - document.iform.trapserverport.disabled = true; - document.iform.trapstring.disabled = true; - - document.iform.mibii.disabled = true; - document.iform.netgraph.disabled = true; - document.iform.pf.disabled = true; - document.iform.hostres.disabled = true; - document.iform.ucd.disabled = true; - document.iform.regex.disabled = true; - //document.iform.bridge.disabled = true; + */ + document.iform.trapenable.disabled = true; + document.iform.trapserver.disabled = true; + document.iform.trapserverport.disabled = true; + document.iform.trapstring.disabled = true; + + document.iform.mibii.disabled = true; + document.iform.netgraph.disabled = true; + document.iform.pf.disabled = true; + document.iform.hostres.disabled = true; + document.iform.ucd.disabled = true; + document.iform.regex.disabled = true; + //document.iform.bridge.disabled = true; } } //]]> @@ -281,142 +272,166 @@ function enable_change(whichone) { <?php include("fbegin.inc"); ?> <?php if ($input_errors) print_input_errors($input_errors); ?> <?php if ($savemsg) print_info_box($savemsg); ?> - <form action="services_snmp.php" method="post" name="iform" id="iform"> - <table width="100%" border="0" cellpadding="6" cellspacing="0" summary="snmp"> - - <tr> - <td colspan="2" valign="top" class="optsect_t"> - <table border="0" cellspacing="0" cellpadding="0" width="100%" summary="enable"> - <tr><td class="optsect_s"><strong><?=gettext("SNMP Daemon");?></strong></td> - <td align="right" class="optsect_s"><input name="enable" id="enable" type="checkbox" value="yes" <?php if ($pconfig['enable']) echo "checked=\"checked\""; ?> onclick="enable_change(this)" /> <strong><?=gettext("Enable");?></strong></td></tr> - </table></td> - </tr> - - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Polling Port ");?></td> - <td width="78%" class="vtable"> - <input name="pollport" type="text" class="formfld unknown" id="pollport" size="40" value="<?=htmlspecialchars($pconfig['pollport']) ? htmlspecialchars($pconfig['pollport']) : htmlspecialchars(161);?>" /> - <br /><?=gettext("Enter the port to accept polling events on (default 161)");?><br /> - </td> - </tr> - - <tr> - <td width="22%" valign="top" class="vncell"><?=gettext("System location");?></td> - <td width="78%" class="vtable"> - <input name="syslocation" type="text" class="formfld unknown" id="syslocation" size="40" value="<?=htmlspecialchars($pconfig['syslocation']);?>" /> - </td> - </tr> - - <tr> - <td width="22%" valign="top" class="vncell"><?=gettext("System contact");?></td> - <td width="78%" class="vtable"> - <input name="syscontact" type="text" class="formfld unknown" id="syscontact" size="40" value="<?=htmlspecialchars($pconfig['syscontact']);?>" /> - </td> - </tr> - - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Read Community String");?></td> - <td width="78%" class="vtable"> - <input name="rocommunity" type="text" class="formfld unknown" id="rocommunity" size="40" value="<?=htmlspecialchars($pconfig['rocommunity']);?>" /> - <br /><?=gettext("The community string is like a password, restricting access to querying SNMP to hosts knowing the community string. Use a strong value here to protect from unauthorized information disclosure.");?><br /> - </td> - </tr> - <tr><td> </td></tr> - - <tr> - <td colspan="2" valign="top" class="optsect_t"> - <table border="0" cellspacing="0" cellpadding="0" width="100%" summary="enable"> - <tr><td class="optsect_s"><strong><?=gettext("SNMP Traps");?></strong></td> - <td align="right" class="optsect_s"><input name="trapenable" id="trapenable" type="checkbox" value="yes" <?php if ($pconfig['trapenable']) echo "checked=\"checked\""; ?> onclick="enable_change(this)" /> <strong><?=gettext("Enable");?></strong></td></tr> - </table></td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Trap server");?></td> - <td width="78%" class="vtable"> - <input name="trapserver" type="text" class="formfld unknown" id="trapserver" size="40" value="<?=htmlspecialchars($pconfig['trapserver']);?>" /> - <br /><?=gettext("Enter trap server name");?><br /> - </td> - </tr> - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Trap server port ");?></td> - <td width="78%" class="vtable"> - <input name="trapserverport" type="text" class="formfld unknown" id="trapserverport" size="40" value="<?=htmlspecialchars($pconfig['trapserverport']) ? htmlspecialchars($pconfig['trapserverport']) : htmlspecialchars(162);?>" /> - <br /><?=gettext("Enter the port to send the traps to (default 162)");?><br /> - </td> - </tr> - - <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("Enter the SNMP trap string");?></td> - <td width="78%" class="vtable"> - <input name="trapstring" type="text" class="formfld unknown" id="trapstring" size="40" value="<?=htmlspecialchars($pconfig['trapstring']);?>" /> - <br /><?=gettext("Trap string");?><br /> - </td> - </tr> - - <tr><td> </td></tr> - - <tr> - <td colspan="2" valign="top" class="optsect_t"> - <table border="0" cellspacing="0" cellpadding="0" width="100%" summary="modules"> - <tr><td class="optsect_s"><strong><?=gettext("Modules");?></strong></td> - <td align="right" class="optsect_s"> </td></tr> - </table></td> - </tr> +<form action="services_snmp.php" method="post" name="iform" id="iform"> + <table width="100%" border="0" cellpadding="6" cellspacing="0" summary="snmp"> + <tr> + <td colspan="2" valign="top" class="optsect_t"> + <table border="0" cellspacing="0" cellpadding="0" width="100%" summary="enable"> + <tr> + <td class="optsect_s"><strong><?=gettext("SNMP Daemon");?></strong></td> + <td align="right" class="optsect_s"> + <input name="enable" id="enable" type="checkbox" value="yes" <?php if ($pconfig['enable']) echo "checked=\"checked\""; ?> onclick="enable_change(this)" /> <strong><?=gettext("Enable");?></strong> + </td> + </tr> + </table> + </td> + </tr> + + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Polling Port ");?></td> + <td width="78%" class="vtable"> + <input name="pollport" type="text" class="formfld unknown" id="pollport" size="40" value="<?=htmlspecialchars($pconfig['pollport']) ? htmlspecialchars($pconfig['pollport']) : htmlspecialchars(161);?>" /> + <br /><?=gettext("Enter the port to accept polling events on (default 161)");?><br /> + </td> + </tr> <tr> - <td width="22%" valign="top" class="vncellreq"><?=gettext("SNMP Modules");?></td> - <td width="78%" class="vtable"> - <input name="mibii" type="checkbox" id="mibii" value="yes" onclick="check_deps()" <?php if ($pconfig['mibii']) echo "checked=\"checked\""; ?> /><?=gettext("MibII"); ?> - <br /> - <input name="netgraph" type="checkbox" id="netgraph" value="yes" <?php if ($pconfig['netgraph']) echo "checked=\"checked\""; ?> /><?=gettext("Netgraph"); ?> - <br /> - <input name="pf" type="checkbox" id="pf" value="yes" <?php if ($pconfig['pf']) echo "checked=\"checked\""; ?> /><?=gettext("PF"); ?> - <br /> - <input name="hostres" type="checkbox" id="hostres" value="yes" onclick="check_deps()" <?php if ($pconfig['hostres']) echo "checked=\"checked\""; ?> /><?=gettext("Host Resources (Requires MibII)");?> - <br /> - <input name="ucd" type="checkbox" id="ucd" value="yes" <?php if ($pconfig['ucd']) echo "checked=\"checked\""; ?> /><?=gettext("UCD"); ?> - <br /> - <input name="regex" type="checkbox" id="regex" value="yes" <?php if ($pconfig['regex']) echo "checked=\"checked\""; ?> /><?=gettext("Regex"); ?> - <br /> - </td> + <td width="22%" valign="top" class="vncell"><?=gettext("System location");?></td> + <td width="78%" class="vtable"> + <input name="syslocation" type="text" class="formfld unknown" id="syslocation" size="40" value="<?=htmlspecialchars($pconfig['syslocation']);?>" /> + </td> </tr> - <tr><td> </td></tr> + <tr> + <td width="22%" valign="top" class="vncell"><?=gettext("System contact");?></td> + <td width="78%" class="vtable"> + <input name="syscontact" type="text" class="formfld unknown" id="syscontact" size="40" value="<?=htmlspecialchars($pconfig['syscontact']);?>" /> + </td> + </tr> + + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Read Community String");?></td> + <td width="78%" class="vtable"> + <input name="rocommunity" type="text" class="formfld unknown" id="rocommunity" size="40" value="<?=htmlspecialchars($pconfig['rocommunity']);?>" /> + <br /><?=gettext("The community string is like a password, restricting access to querying SNMP to hosts knowing the community string. Use a strong value here to protect from unauthorized information disclosure.");?><br /> + </td> + </tr> + <tr> + <td> </td> + </tr> <tr> <td colspan="2" valign="top" class="optsect_t"> - <table border="0" cellspacing="0" cellpadding="0" width="100%" summary="interface"> - <tr><td class="optsect_s"><strong><?=gettext("Interface Binding");?></strong></td> - <td align="right" class="optsect_s"> </td></tr> - </table></td> + <table border="0" cellspacing="0" cellpadding="0" width="100%" summary="enable"> + <tr> + <td class="optsect_s"><strong><?=gettext("SNMP Traps");?></strong></td> + <td align="right" class="optsect_s"> + <input name="trapenable" id="trapenable" type="checkbox" value="yes" <?php if ($pconfig['trapenable']) echo "checked=\"checked\""; ?> onclick="enable_change(this)" /> <strong><?=gettext("Enable");?></strong> + </td> + </tr> + </table> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Trap server");?></td> + <td width="78%" class="vtable"> + <input name="trapserver" type="text" class="formfld unknown" id="trapserver" size="40" value="<?=htmlspecialchars($pconfig['trapserver']);?>" /> + <br /><?=gettext("Enter trap server name");?><br /> + </td> + </tr> + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Trap server port ");?></td> + <td width="78%" class="vtable"> + <input name="trapserverport" type="text" class="formfld unknown" id="trapserverport" size="40" value="<?=htmlspecialchars($pconfig['trapserverport']) ? htmlspecialchars($pconfig['trapserverport']) : htmlspecialchars(162);?>" /> + <br /><?=gettext("Enter the port to send the traps to (default 162)");?><br /> + </td> + </tr> + + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("Enter the SNMP trap string");?></td> + <td width="78%" class="vtable"> + <input name="trapstring" type="text" class="formfld unknown" id="trapstring" size="40" value="<?=htmlspecialchars($pconfig['trapstring']);?>" /> + <br /><?=gettext("Trap string");?><br /> + </td> + </tr> + + <tr> + <td> </td> + </tr> + + <tr> + <td colspan="2" valign="top" class="optsect_t"> + <table border="0" cellspacing="0" cellpadding="0" width="100%" summary="modules"> + <tr> + <td class="optsect_s"><strong><?=gettext("Modules");?></strong></td> + <td align="right" class="optsect_s"> </td> + </tr> + </table> + </td> + </tr> + + <tr> + <td width="22%" valign="top" class="vncellreq"><?=gettext("SNMP Modules");?></td> + <td width="78%" class="vtable"> + <input name="mibii" type="checkbox" id="mibii" value="yes" onclick="check_deps()" <?php if ($pconfig['mibii']) echo "checked=\"checked\""; ?> /><?=gettext("MibII"); ?> + <br /> + <input name="netgraph" type="checkbox" id="netgraph" value="yes" <?php if ($pconfig['netgraph']) echo "checked=\"checked\""; ?> /><?=gettext("Netgraph"); ?> + <br /> + <input name="pf" type="checkbox" id="pf" value="yes" <?php if ($pconfig['pf']) echo "checked=\"checked\""; ?> /><?=gettext("PF"); ?> + <br /> + <input name="hostres" type="checkbox" id="hostres" value="yes" onclick="check_deps()" <?php if ($pconfig['hostres']) echo "checked=\"checked\""; ?> /><?=gettext("Host Resources (Requires MibII)");?> + <br /> + <input name="ucd" type="checkbox" id="ucd" value="yes" <?php if ($pconfig['ucd']) echo "checked=\"checked\""; ?> /><?=gettext("UCD"); ?> + <br /> + <input name="regex" type="checkbox" id="regex" value="yes" <?php if ($pconfig['regex']) echo "checked=\"checked\""; ?> /><?=gettext("Regex"); ?> + <br /> + </td> + </tr> + + <tr> + <td> </td> + </tr> + + <tr> + <td colspan="2" valign="top" class="optsect_t"> + <table border="0" cellspacing="0" cellpadding="0" width="100%" summary="interface"> + <tr> + <td class="optsect_s"><strong><?=gettext("Interface Binding");?></strong></td> + <td align="right" class="optsect_s"> </td> + </tr> + </table> + </td> </tr> <tr> <td width="22%" valign="top" class="vncellreq"><?=gettext("Bind Interface"); ?></td> <td width="78%" class="vtable"> <select name="bindip" class="formselect"> <option value="">All</option> - <?php $listenips = get_possible_listen_ips(); + <?php + $listenips = get_possible_listen_ips(); foreach ($listenips as $lip => $ldescr): $selected = ""; - if ($lip == $pconfig['bindip']) + if ($lip == $pconfig['bindip']) { $selected = "selected=\"selected\""; + } ?> <option value="<?=$lip;?>" <?=$selected;?>> <?=htmlspecialchars($ldescr);?> </option> - <?php endforeach; - unset($listenips); + <?php + endforeach; + unset($listenips); ?> </select> </td> </tr> - <tr> - <td width="22%" valign="top"> </td> - <td width="78%"> - <input name="Submit" type="submit" class="formbtn" value="<?=gettext("Save");?>" onclick="enable_change(true)" /> - </td> - </tr> - </table> + <tr> + <td width="22%" valign="top"> </td> + <td width="78%"> + <input name="Submit" type="submit" class="formbtn" value="<?=gettext("Save");?>" onclick="enable_change(true)" /> + </td> + </tr> + </table> </form> <script type="text/javascript"> //<![CDATA[ |