aboutsummaryrefslogtreecommitdiffstats
path: root/config/snort-dev/snort_interfaces_whitelist_edit.php
diff options
context:
space:
mode:
Diffstat (limited to 'config/snort-dev/snort_interfaces_whitelist_edit.php')
-rw-r--r--config/snort-dev/snort_interfaces_whitelist_edit.php603
1 files changed, 378 insertions, 225 deletions
diff --git a/config/snort-dev/snort_interfaces_whitelist_edit.php b/config/snort-dev/snort_interfaces_whitelist_edit.php
index dbdbb649..ef930eb9 100644
--- a/config/snort-dev/snort_interfaces_whitelist_edit.php
+++ b/config/snort-dev/snort_interfaces_whitelist_edit.php
@@ -1,18 +1,18 @@
<?php
/* $Id$ */
/*
-
- part of pfSense
+ firewall_aliases_edit.php
+ Copyright (C) 2004 Scott Ullrich
+ Copyright (C) 2011 Ermal Luci
All rights reserved.
+ originially part of m0n0wall (http://m0n0.ch/wall)
Copyright (C) 2003-2004 Manuel Kasper <mk@neon1.net>.
All rights reserved.
- Pfsense Old snort GUI
- Copyright (C) 2006 Scott Ullrich.
-
- Pfsense snort GUI
- Copyright (C) 2008-2012 Robert Zelaya.
+ modified for the pfsense snort package
+ Copyright (C) 2009-2010 Robert Zelaya.
+ All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
@@ -24,10 +24,6 @@
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- 3. Neither the name of the pfSense nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
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
@@ -38,304 +34,461 @@
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
-
-*/
+ */
-require_once('guiconfig.inc');
-require_once('/usr/local/pkg/snort/snort_new.inc');
-require_once('/usr/local/pkg/snort/snort_gui.inc');
+require_once("guiconfig.inc");
+require_once("/usr/local/pkg/snort/snort_gui.inc");
+require_once("/usr/local/pkg/snort/snort.inc");
-//Set no caching
-header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
-header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
-header("Cache-Control: no-store, no-cache, must-revalidate");
-header("Cache-Control: post-check=0, pre-check=0", false);
-header("Pragma: no-cache");
+if (!is_array($config['installedpackages']['snortglobal']['whitelist']['item']))
+ $config['installedpackages']['snortglobal']['whitelist']['item'] = array();
-//$GLOBALS['csrf']['rewrite-js'] = false;
+$a_whitelist = &$config['installedpackages']['snortglobal']['whitelist']['item'];
-$uuid = $_GET['uuid'];
-if (isset($_POST['uuid']))
-$uuid = $_POST['uuid'];
-
-if ($uuid == '') {
- echo 'error: no uuid';
- exit(0);
+$id = $_GET['id'];
+if (isset($_POST['id']))
+ $id = $_POST['id'];
+if (is_null($id)) {
+ header("Location: /snort/snort_interfaces_whitelist.php");
+ exit;
}
-$a_list = snortSql_fetchAllSettings('snortDB', 'SnortWhitelist', 'uuid', $uuid);
-
-// $a_list returns empty use defaults
-if ($a_list == '')
-{
-
- $a_list = array(
- 'id' => '',
- 'date' => date(U),
- 'uuid' => $uuid,
- 'filename' => '',
- 'snortlisttype' => 'whitelist',
- 'description' => '',
- 'wanips' => 'on',
- 'wangateips' => 'on',
- 'wandnsips' => 'on',
- 'vips' => 'on',
- 'vpnips' => 'on'
- );
-
+/* gen uuid for each iface !inportant */
+if ($config['installedpackages']['snortglobal']['whitelist']['item'][$id]['uuid'] == '') {
+ $whitelist_uuid = 0;
+ while ($whitelist_uuid > 65535 || $whitelist_uuid == 0) {
+ $whitelist_uuid = mt_rand(1, 65535);
+ $pconfig['uuid'] = $whitelist_uuid;
+ }
+} else if ($config['installedpackages']['snortglobal']['whitelist']['item'][$id]['uuid'] != '') {
+ $whitelist_uuid = $config['installedpackages']['snortglobal']['whitelist']['item'][$id]['uuid'];
}
-$listFilename = $a_list['filename'];
+$d_snort_whitelist_dirty_path = '/var/run/snort_whitelist.dirty';
+
+/* returns true if $name is a valid name for a whitelist file name or ip */
+function is_validwhitelistname($name, $type) {
+ if (!is_string($name))
+ return false;
-$a_list['list'] = snortSql_fetchAllSettingsList('SnortWhitelistips', $listFilename);
+ if ($type === 'name' && !preg_match("/[^a-zA-Z0-9\_]/", $name))
+ return true;
+
+ if ($type === 'ip' && !preg_match("/[^a-zA-Z0-9\:\,\.\/]/", $name))
+ return true;
+
+ if ($type === 'detail' && !preg_match("/[^a-zA-Z0-9\:\,\.\+\s\-\']/", $name))
+ return true;
-$wanips_chk = $a_list['wanips'];
-$wanips_on = ($wanips_chk == 'on' ? 'checked' : '');
+ return false;
+}
-$wangateips_chk = $a_list['wangateips'];
-$wangateips_on = ($wangateips_chk == 'on' ? 'checked' : '');
+if (isset($id) && $a_whitelist[$id]) {
+
+ /* old settings */
+ $pconfig = array();
+ $pconfig['name'] = $a_whitelist[$id]['name'];
+ $pconfig['uuid'] = $a_whitelist[$id]['uuid'];
+ $pconfig['detail'] = $a_whitelist[$id]['detail'];
+ $pconfig['addressuuid'] = $a_whitelist[$id]['addressuuid'];
+ $pconfig['snortlisttype'] = $a_whitelist[$id]['snortlisttype'];
+ $pconfig['address'] = $a_whitelist[$id]['address'];
+ $pconfig['descr'] = html_entity_decode($a_whitelist[$id]['descr']);
+ $pconfig['wanips'] = $a_whitelist[$id]['wanips'];
+ $pconfig['wangateips'] = $a_whitelist[$id]['wangateips'];
+ $pconfig['wandnsips'] = $a_whitelist[$id]['wandnsips'];
+ $pconfig['vips'] = $a_whitelist[$id]['vips'];
+ $pconfig['vpnips'] = $a_whitelist[$id]['vpnips'];
+ $addresses = explode(' ', $pconfig['address']);
+ $address = explode(" ", $addresses[0]);
+}
-$wandnsips_chk = $a_list['wandnsips'];
-$wandnsips_on = ($wandnsips_chk == 'on' ? 'checked' : '');
+if ($_POST['submit']) {
-$vips_chk = $a_list['vips'];
-$vips_on = ($vips_chk == 'on' ? 'checked' : '');
+ conf_mount_rw();
-$vpnips_chk = $a_list['vpnips'];
-$vpnips_on = ($vpnips_chk == 'on' ? 'checked' : '');
+ unset($input_errors);
+ $pconfig = $_POST;
+ //input validation
+ $reqdfields = explode(" ", "name"); // post name required
+ $reqdfieldsn = explode(",", "Name"); // error msg name
+ do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
- $pgtitle = "Services: Snort: Whitelist Edit";
- include("/usr/local/pkg/snort/snort_head.inc");
+ if(strtolower($_POST['name']) == "defaultwhitelist")
+ $input_errors[] = "Whitelist file names may not be named defaultwhitelist.";
-?>
+ if (is_validwhitelistname($_POST['name'], 'name') == false)
+ $input_errors[] = "Whitelist name may only consist of the characters a-z, A-Z and 0-9. Note: No Spaces.";
+
+ if (is_validwhitelistname($_POST['descr'], 'detail') == false)
+ $input_errors[] = "Whitelist description name may only consist of the characters [a-z, A-Z 0-9 + , :]. Note: No Spaces.";
+
+ // check for name conflicts
+ foreach ($a_whitelist as $w_list) {
+ if (isset($id) && ($a_whitelist[$id]) && ($a_whitelist[$id] === $w_list))
+ continue;
+
+ if ($w_list['name'] == $_POST['name']) {
+ $input_errors[] = "A whitelist file name with this name already exists.";
+ break;
+ }
+ }
+
+ // build string lists
+ if (!empty($pconfig[addresses])) {
+ $countArray = count($pconfig[addresses]);
+ $i = 0;
+
+ foreach ($pconfig[addresses] as $address) {
+
+ $i++;
+
+ if (is_validwhitelistname($address[address], 'ip') == false) {
+ $input_errors[] = "List of IPs may only consist of the characters [. : 0-9]. Note: No Spaces.";
+ }
+
+ if (is_validwhitelistname($address[detail], 'detail') == false) {
+ $input_errors[] = "List of IP descriptions may only consist of the characters [a-z, A-Z 0-9 + , : ' -].";
+ }
+
+ if (!empty($address[address]) && !empty($address[uuid])) {
+
+ $final_address_ip .= $address[address];
+
+ $final_address_uuid .= $address[uuid];
+
+ if (empty($address[detail])) {
+ $final_address_details .= "Entry added " . date('r');
+ }else{
+ $final_address_details .= $address[detail];
+ }
+
+ if($i < $countArray){
+ $final_address_ip .= ',';
+ $final_address_details .= '||';
+ $final_address_uuid .= '||';
+ }
+ }
+ }
+ }
+
+ $w_list = array();
+ // post user input
+ $w_list['name'] = $_POST['name'];
+ $w_list['descr'] = mb_convert_encoding($_POST['descr'],"HTML-ENTITIES","auto");
+ $w_list['uuid'] = $whitelist_uuid;
+ $w_list['snortlisttype'] = $_POST['snortlisttype'];
+ $w_list['wanips'] = $_POST['wanips']? 'yes' : 'no';
+ $w_list['wangateips'] = $_POST['wangateips']? 'yes' : 'no';
+ $w_list['wandnsips'] = $_POST['wandnsips']? 'yes' : 'no';
+ $w_list['vips'] = $_POST['vips']? 'yes' : 'no';
+ $w_list['vpnips'] = $_POST['vpnips']? 'yes' : 'no';
+
+ $w_list['addressuuid'] = $final_address_uuid;
+ $w_list['address'] = $final_address_ip;
+ $w_list['detail'] = $final_address_details;
-<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
-
-<!-- loading msg -->
-<div id="loadingWaiting">
- <div class="snortModal" style="top: 200px; left: 700px;">
- <div class="snortModalTop">
- <!-- <div class="snortModalTopClose"><a href="javascript:hideLoading('#loadingWaiting');"><img src="/snort/images/close_9x9.gif" border="0" height="9" width="9"></a></div> -->
- </div>
- <div class="snortModalTitle">
- <p><img src="./images/loading.gif" /><br><br>Please Wait...</p>
- </div>
- <div>
- <p class="loadingWaitingMessage"></p>
- </div>
- </div>
-</div>
-
-<?php include("fbegin.inc"); ?>
-<!-- hack to fix the hardcoed fbegin link in header -->
-<div id="header-left2">
-<a href="../index.php" id="status-link2">
-<img src="./images/transparent.gif" border="0"></img>
-</a>
-</div>
-
-<div class="body2"><!-- hack to fix the hardcoed fbegin link in header -->
-<div id="header-left2"><a href="../index.php" id="status-link2"><img src="./images/transparent.gif" border="0"></img></a></div>
-
-<form id="iform">
+ if (empty($final_address_ip) && $w_list['wanips'] === 'no' && $w_list['wangateips'] === 'no' && $w_list['wandnsips'] === 'no' && $w_list['vips'] === 'no' && $w_list['vpnips'] === 'no')
+ $input_errors[] = "You must add a \"auto generated ip\" or a \"custom ip\"! ";
+
+ if (!$input_errors) {
+ if (isset($id) && $a_whitelist[$id])
+ $a_whitelist[$id] = $w_list;
+ else
+ $a_whitelist[] = $w_list;
-<table width="100%" border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td>
-
- <div class="newtabmenu" style="margin: 1px 0px; width: 775px;"><!-- Tabbed bar code-->
- <ul class="newtabmenu">
- <li><a href="/snort/snort_interfaces.php"><span>Snort Interfaces</span></a></li>
- <li><a href="/snort/snort_interfaces_global.php"><span>Global Settings</span></a></li>
- <li><a href="/snort/snort_download_updates.php"><span>Updates</span></a></li>
- <li><a href="/snort/snort_interfaces_rules.php"><span>RulesDB</span></a></li>
- <li><a href="/snort/snort_alerts.php"><span>Alerts</span></a></li>
- <li><a href="/snort/snort_blocked.php"><span>Blocked</span></a></li>
- <li class="newtabmenu_active"><a href="/snort/snort_interfaces_whitelist.php"><span>Whitelists</span></a></li>
- <li><a href="/snort/snort_interfaces_suppress.php"><span>Suppress</span></a></li>
- <li><a href="/snort/snort_help_info.php"><span>Help</span></a></li>
- </ul>
- </div>
+ write_config();
+
+ // create whitelist and homenet file then sync files
+ sync_snort_package_config();
+
+ header("Location: /snort/snort_interfaces_whitelist.php");
+ exit;
+ } else {
+
+ $pconfig['wanips'] = $a_whitelist[$id]['wanips'];
+ $pconfig['wangateips'] = $a_whitelist[$id]['wangateips'];
+ $pconfig['wandnsips'] = $a_whitelist[$id]['wandnsips'];
+ $pconfig['vips'] = $a_whitelist[$id]['vips'];
+ $pconfig['vpnips'] = $a_whitelist[$id]['vpnips'];
+
+ $pconfig['descr'] = mb_convert_encoding($_POST['descr'],"HTML-ENTITIES","auto");
+ $pconfig['address'] = $final_address_ip;
+ $pconfig['detail'] = $final_address_details;
+ $pconfig['addressuuid'] = $final_address_uuid;
+
+ $input_errors[] = 'Press Cancel to reset.';
+ }
+
+}
+
+$pgtitle = "Services: Snort: Whitelist: Edit $whitelist_uuid";
+include_once("head.inc");
+
+?>
+
+<body link="#0000CC" vlink="#0000CC" alink="#0000CC" >
+
+<?php
+include("fbegin.inc");
+echo $snort_general_css;
+?>
+
+<?php
+ /* Display Alert message */
+ if ($input_errors)
+ print_input_errors($input_errors); // TODO: add checks
+
+ if ($savemsg)
+ print_info_box($savemsg);
+
+?>
+<div id="inputerrors"></div>
+
+<form action="snort_interfaces_whitelist_edit.php?id=<?=$id?>" method="post" name="iform" id="iform">
+<table width="100%" border="0" cellpadding="0" cellspacing="0">
+<tr><td>
+<?php
+ $tab_array = array();
+ $tab_array[0] = array(gettext("Snort Interfaces"), false, "/snort/snort_interfaces.php");
+ $tab_array[1] = array(gettext("Global Settings"), false, "/snort/snort_interfaces_global.php");
+ $tab_array[2] = array(gettext("Updates"), false, "/snort/snort_download_updates.php");
+ $tab_array[3] = array(gettext("Alerts"), false, "/snort/snort_alerts.php");
+ $tab_array[4] = array(gettext("Blocked"), false, "/snort/snort_blocked.php");
+ $tab_array[5] = array(gettext("Whitelists"), true, "/snort/snort_interfaces_whitelist.php");
+ $tab_array[6] = array(gettext("Suppress"), false, "/snort/snort_interfaces_suppress.php");
+ $tab_array[7] = array(gettext("Help"), false, "/snort/help_and_info.php");
+ display_top_tabs($tab_array);
+?>
</td>
- </tr>
+</tr>
<tr>
- <td id="tdbggrey">
- <table width="100%" border="0" cellpadding="10px" cellspacing="0">
- <tr>
- <td class="tabnavtbl">
+ <td class="tabcont">
+
<table width="100%" border="0" cellpadding="6" cellspacing="0">
- <!-- START MAIN AREA -->
-
- <!-- table point -->
- <input name="snortSaveWhitelist" type="hidden" value="1" />
- <input name="ifaceTab" type="hidden" value="snort_interfaces_whitelist_edit" />
- <input type="hidden" name="dbName" value="snortDB" /> <!-- what db -->
- <input type="hidden" name="dbTable" value="SnortWhitelist" /> <!-- what db table -->
- <input name="date" type="hidden" value="<?=$a_list['date'];?>" />
- <input name="uuid" type="hidden" value="<?=$a_list['uuid'];?>" />
-
<tr>
- <td colspan="2" valign="top" class="listtopic">Add the name and description of the file.</td>
-
+ <td colspan="2" valign="top" class="listtopic">Add the name and
+ description of the file.</td>
</tr>
- <tr id="filename" data-options='{"filename":"<?=$listFilename; ?>"}' >
+ <tr>
<td valign="top" class="vncellreq2">Name</td>
- <td class="vtable">
- <input class="formfld2" name="filename" type="text" id="name" size="40" value="<?=$listFilename; ?>" /> <br />
- <span class="vexpl"> The list name may only consist of the characters a-z, A-Z and 0-9. <span class="red">Note: </span> No Spaces. </span>
- </td>
+ <td class="vtable"><input name="name" type="text" id="name"
+ size="40" value="<?=htmlspecialchars($pconfig['name']);?>" /> <br />
+ <span class="vexpl"> The list name may only consist of the
+ characters a-z, A-Z and 0-9. <span class="red">Note: </span> No
+ Spaces. </span></td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell2">Description</td>
- <td width="78%" class="vtable">
- <input class="formfld2" name="description" type="text" id="descr" size="40" value="<?=$a_list['description']; ?>" /> <br />
- <span class="vexpl"> You may enter a description here for your reference (not parsed). </span>
- </td>
+ <td width="78%" class="vtable"><input name="descr" type="text"
+ id="descr" size="40" value="<?=$pconfig['descr'];?>" /> <br />
+ <span class="vexpl"> You may enter a description here for your
+ reference (not parsed). </span></td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell2">List Type</td>
<td width="78%" class="vtable">
- <div style="padding: 5px; margin-top: 16px; margin-bottom: 16px; border: 1px dashed #ff3333; background-color: #eee; color: #000; font-size: 8pt;"id="itemhelp">
- <strong>WHITELIST:</strong>&nbsp;&nbsp;&nbsp;This list specifies addresses that Snort Package should not block.<br><br>
- <strong>NETLIST:</strong>&nbsp;&nbsp;&nbsp;This list is for defining addresses as $HOME_NET or $EXTERNAL_NET in the snort.conf file.
- </div>
- <select name="snortlisttype" class="formfld2" id="snortlisttype">
+
+ <div
+ style="padding: 5px; margin-top: 16px; margin-bottom: 16px; border: 1px dashed #ff3333; background-color: #eee; color: #000; font-size: 8pt;"
+ id="itemhelp"><strong>WHITELIST:</strong>&nbsp;&nbsp;&nbsp;This
+ list specifies addresses that Snort Package should not block.<br>
+ <br>
+ <strong>NETLIST:</strong>&nbsp;&nbsp;&nbsp;This list is for defining
+ addresses as $HOME_NET or $EXTERNAL_NET in the snort.conf file.</div>
+
+ <select name="snortlisttype" class="formfld" id="snortlisttype">
<?php
- $updateDaysList = array('whitelist' => 'WHITELIST', 'netlist' => 'NETLIST');
- snortDropDownList($updateDaysList, $a_list['snortlisttype']);
- ?>
- </select>
- <span class="vexpl"> &nbsp;&nbsp;&nbsp;Choose the type of list you will like see in your <span class="red">Interface Edit Tab</span>.</span>
- </td>
+ $interfaces4 = array('whitelist' => 'WHITELIST', 'netlist' => 'NETLIST');
+ foreach ($interfaces4 as $iface4 => $ifacename4): ?>
+ <option value="<?=$iface4;?>"
+ <?php if ($iface4 == $pconfig['snortlisttype']) echo "selected"; ?>>
+ <?=htmlspecialchars($ifacename4);?></option>
+ <?php endforeach; ?>
+ </select> <span class="vexpl"> &nbsp;&nbsp;&nbsp;Choose the type of
+ list you will like see in your <span class="red">Interface Edit Tab</span>.
+ </span></td>
</tr>
<tr>
- <td colspan="2" valign="top" class="listtopic">Add auto generated ips.</td>
+ <td colspan="2" valign="top" class="listtopic">Add auto generated
+ ips.</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell2">WAN IPs</td>
- <td width="78%" class="vtable">
- <input name="wanips" type="checkbox" id="wanips" size="40" value="on" <?=$wanips_on; ?> />
- <span class="vexpl"> Add WAN IPs to the list. </span>
- </td>
+ <td width="78%" class="vtable"><input name="wanips" type="checkbox"
+ id="wanips" size="40" value="yes"
+ <?php if($pconfig['wanips'] == 'yes'){ echo "checked";} if($pconfig['wanips'] == ''){ echo "checked";} ?> />
+ <span class="vexpl"> Add WAN IPs to the list. </span></td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell2">Wan Gateways</td>
- <td width="78%" class="vtable">
- <input name="wangateips" type="checkbox" id="wangateips" size="40" value="on" <?=$wangateips_on; ?> />
- <span class="vexpl"> Add WAN Gateways to the list. </span>
- </td>
+ <td width="78%" class="vtable"><input name="wangateips"
+ type="checkbox" id="wangateips" size="40" value="yes"
+ <?php if($pconfig['wangateips'] == 'yes'){ echo "checked";} if($pconfig['wangateips'] == ''){ echo "checked";} ?> />
+ <span class="vexpl"> Add WAN Gateways to the list. </span></td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell2">Wan DNS servers</td>
- <td width="78%" class="vtable">
- <input name="wandnsips" type="checkbox" id="wandnsips" size="40" value="on" <?=$wandnsips_on; ?> />
- <span class="vexpl"> Add WAN DNS servers to the list. </span>
- </td>
+ <td width="78%" class="vtable"><input name="wandnsips"
+ type="checkbox" id="wandnsips" size="40" value="yes"
+ <?php if($pconfig['wandnsips'] == 'yes'){ echo "checked";} if($pconfig['wandnsips'] == ''){ echo "checked";} ?> />
+ <span class="vexpl"> Add WAN DNS servers to the list. </span></td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell2">Virtual IP Addresses</td>
- <td width="78%" class="vtable">
- <input name="vips" type="checkbox" id="vips" size="40" value="on" <?=$vips_on; ?> />
- <span class="vexpl"> Add Virtual IP Addresses to the list. </span>
- </td>
+ <td width="78%" class="vtable"><input name="vips" type="checkbox"
+ id="vips" size="40" value="yes"
+ <?php if($pconfig['vips'] == 'yes'){ echo "checked";} if($pconfig['vips'] == ''){ echo "checked";} ?> />
+ <span class="vexpl"> Add Virtual IP Addresses to the list. </span></td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell2">VPNs</td>
- <td width="78%" class="vtable">
- <input name="vpnips" type="checkbox" id="vpnips" size="40" value="on" <?=$vpnips_on; ?> />
- <span class="vexpl"> Add VPN Addresses to the list. </span>
- </td>
+ <td width="78%" class="vtable"><input name="vpnips" type="checkbox"
+ id="vpnips" size="40" value="yes"
+ <?php if($pconfig['vpnips'] == 'yes'){ echo "checked";} if($pconfig['vpnips'] == ''){ echo "checked";} ?> />
+ <span class="vexpl"> Add VPN Addresses to the list. </span></td>
</tr>
<tr>
- <td colspan="2" valign="top" class="listtopic">Add your own custom ips.</td>
+ <td colspan="2" valign="top" class="listtopic">Add your own custom
+ ips.</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncellreq2">
<div id="addressnetworkport">IP or CIDR items</div>
</td>
<td width="78%" class="vtable">
- <table >
- <tbody class="insertrow">
+ <table id="maintable">
+ <tbody>
<tr>
<td colspan="4">
- <div style="width:550px; padding: 5px; margin-top: 16px; margin-bottom: 16px; border: 1px dashed #ff3333; background-color: #eee; color: #000; font-size: 8pt;"id="itemhelp">
- For <strong>WHITELIST's</strong> enter <strong>ONLY IPs not CIDRs</strong>. Example: 192.168.4.1<br><br>
- For <strong>NETLIST's</strong> you may enter <strong>IPs and CIDRs</strong>. Example: 192.168.4.1 or 192.168.4.0/24
- </div>
- </td>
- </tr>
- <tr>
- <td>
- <div id="onecolumn" style="width:175px;"><span class="vexpl">IP or CIDR</span></div>
- </td>
- <td>
- <div id="threecolumn"><span class="vexpl">Add a Description or leave blank and a date will be added.</span></div>
- </td>
- </tr>
- </tbody>
- <!-- Start of js loop -->
- <tbody id="listloopblock" class="insertrow">
- <?php echo "\r"; $i = 0; foreach ($a_list['list'] as $list): ?>
- <tr id="maintable_<?=$list['uuid']?>" data-options='{"pagetable":"SnortWhitelist", "pagedb":"snortDB", "DoPOST":"false"}' >
- <td>
- <input class="formfld2" name="list[<?=$i; ?>][ip]" type="text" id="address" size="30" value="<?=$list['ip']; ?>" />
- </td>
- <td>
- <input class="formfld2" name="list[<?=$i; ?>][description]" type="text" id="detail" size="50" value="<?=$list['description'] ?>" />
+ <div
+ style="padding: 5px; margin-top: 16px; margin-bottom: 16px; border: 1px dashed #ff3333; background-color: #eee; color: #000; font-size: 8pt;"
+ id="itemhelp">For <strong>WHITELIST's</strong> enter <strong>ONLY
+ IPs not CIDRs</strong>. Example: 192.168.4.1<br>
+ <br>
+ For <strong>NETLIST's</strong> you may enter <strong>IPs and
+ CIDRs</strong>. Example: 192.168.4.1 or 192.168.4.0/24</div>
</td>
- <td>
- <img id="icon_x_<?=$list['uuid'];?>" class="icon_click icon_x" src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="delete list" >
- </td>
- <input name="list[<?=$i; ?>][uuid]" type="hidden" value="<?=$list['uuid'];?>" />
</tr>
- <?php echo "\r"; $i++; endforeach; ?>
- </tbody>
- <!-- End of js loop -->
- <tbody>
<tr>
<td>
+ <div id="onecolumn">IP or CIDR</div>
</td>
<td>
- </td>
- <td>
- <img id="iconplus_<?=$i;?>" class="icon_click icon_plus" src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" width="17" height="17" border="0" title="add list" >
+ <div id="threecolumn">Add a Description or leave blank and a date
+ will be added.</div>
</td>
</tr>
+
+ <?php
+ /* cleanup code */
+ $counter = 0;
+ if (!empty($pconfig['address'])):
+
+ $addressArray = explode(',', $pconfig['address']);
+ $detailArray = explode('||', $pconfig['detail']);
+ $RowUUIDArray = explode('||', $pconfig['addressuuid']);
+
+ foreach($addressArray as $address):
+ if (!empty($address)):
+ $detail = $detailArray[$counter];
+ $rowaddressuuid= $RowUUIDArray[$counter];
+ ?>
+ <tr id="<?=$rowaddressuuid?>">
+ <td><input autocomplete="off" name="addresses[<?=$rowaddressuuid;?>][address]" class="formfld unknown" size="30" value="<?=$address;?>" type="text"></td>
+ <td><input autocomplete="off" name="addresses[<?=$rowaddressuuid;?>][detail]" class="formfld unknown" size="50" value="<?=$detail;?>" type="text"></td>
+ <td><img id="<?=$rowaddressuuid;?>" class="icon_x removeRow" src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" alt="" title="remove entry" border="0"></td>
+ <td><input name="addresses[<?=$rowaddressuuid;?>][uuid]" value="<?=$rowaddressuuid;?>" type="hidden"></td>
+ </tr>
+
+ <?php
+ $counter++;
+ endif;
+ endforeach;
+ endif;
+ ?>
</tbody>
</table>
- </td>
+ <img id="addNewRow" class="icon_x" border="0" src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" alt="" title="add another entry" /></td>
</tr>
<tr>
<td width="22%" valign="top">&nbsp;</td>
<td width="78%">
- <input id="submit" name="submit" type="submit" class="formbtn" value="Save" />
- <input id="cancel" name="cancel" type="button" class="formbtn" value="Cancel">
+ <input id="submit" name="submit" type="submit" class="formbtn" value="Save" />
+ <input id="cancelbutton" name="cancelbutton" type="button" class="formbtn" value="Cancel" onclick="history.back()" />
+ <input name="id" type="hidden" value="<?=$id;?>" />
</td>
</tr>
- </form>
-
-
- <!-- STOP MAIN AREA -->
</table>
</td>
- </tr>
- </table>
- </td>
</tr>
</table>
-</div>
-
-
-<!-- footer do not touch below -->
-<?php
-include("fend.inc");
-echo $snort_custom_rnd_box;
-?>
+</form>
+
+<script type="text/javascript">
+
+
+/*! Needs to be watched not my code <- IMPORTANT
+* JavaScript UUID Generator, v0.0.1
+*
+* Copyright (c) 2009 Massimo Lombardo.
+* Dual licensed under the MIT and the GNU GPL licenses.
+*/
+
+function genUUID() {
+ var uuid = (function () {
+ var i,
+ c = "89ab",
+ u = [];
+ for (i = 0; i < 36; i += 1) {
+ u[i] = (Math.random() * 16 | 0).toString(16);
+ }
+ u[8] = u[13] = u[18] = u[23] = "";
+ u[14] = "4";
+ u[19] = c.charAt(Math.random() * 4 | 0);
+ return u.join("");
+ })();
+ return {
+ toString: function () {
+ return uuid;
+ },
+ valueOf: function () {
+ return uuid;
+ }
+ }
+};
+
+
+ jQuery(".icon_x").live('mouseover', function() {
+ jQuery(this).css('cursor', 'pointer');
+ });
+
+ jQuery('#addNewRow').live("click", function(){
+
+ var addRowCount = genUUID();
+
+ jQuery('#maintable > tbody').append(
+ "\n" + '<tr id="' + addRowCount + '">' + "\n" +
+ '<td><input autocomplete="off" name="addresses[' + addRowCount + '][address]" class="formfld unknown" size="30" value="" type="text"></td>' + "\n" +
+ '<td><input autocomplete="off" name="addresses[' + addRowCount + '][detail]" class="formfld unknown" size="50" value="" type="text"></td>' + "\n" +
+ '<td><img id="' + addRowCount + '" class="icon_x removeRow" border="0" src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" alt="" title="remove entry" /></td>' + "\n" +
+ '<td><input name="addresses[' + addRowCount + '][uuid]" type="hidden" value="' + addRowCount + '" /></td>' + "\n" +
+ '</tr>' + "\n"
+ );
+ });
+
+
+ jQuery(".removeRow").live('click', function(){
+ jQuery("#" + this.id).remove();
+ });
+
+</script>
+<?php include("fend.inc"); ?>
</body>
</html>