aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/snort/snort.xml4
-rw-r--r--packages/snort/snort_download_rules.php47
2 files changed, 45 insertions, 6 deletions
diff --git a/packages/snort/snort.xml b/packages/snort/snort.xml
index e47b1199..ce891802 100644
--- a/packages/snort/snort.xml
+++ b/packages/snort/snort.xml
@@ -36,6 +36,10 @@
<url>/pkg_edit.php?xml=snort.xml&amp;id=0</url>
<active/>
</tab>
+ <tab>
+ <text>Update Snort Rules</text>
+ <url>/snort_download_rules.php</url>
+ </tab>
</tabs>
<fields>
<field>
diff --git a/packages/snort/snort_download_rules.php b/packages/snort/snort_download_rules.php
index 7abfe448..1dea97f4 100644
--- a/packages/snort/snort_download_rules.php
+++ b/packages/snort/snort_download_rules.php
@@ -28,10 +28,10 @@
*/
-$pgtitle = array(gettext("Services"),gettext("Snort"),gettext("Update Rules"));
-
+require_once("functions.inc");
require_once("guiconfig.inc");
-require_once("xmlrpc.inc");
+
+$pgtitle = "Services: Snort: Update Rules";
include("head.inc");
@@ -39,6 +39,7 @@ include("head.inc");
<body link="#0000CC" vlink="#0000CC" alink="#0000CC">
<?php include("fbegin.inc"); ?>
+<p class="pgtitle"><?=$pgtitle?></p>
<form action="snort_download_rules.php" method="post">
<div id="inputerrors"></div>
@@ -108,12 +109,14 @@ exec("rm -rf {$tmpfname}; mkdir -p {$tmpfname}");
/* download snort rules */
$static_output = gettext("Downloading current snort rules... ");
update_all_status($static_output);
-download_file_with_progress_bar($dl, $tmpfname);
+download_file_with_progress_bar($dl, $tmpfname . "/snortrules-snapshot-CURRENT.tar.gz");
+verify_downloaded_file($tmpfname . "/snortrules-snapshot-CURRENT.tar.gz");
/* download snort rules md5 file */
$static_output = gettext("Downloading current snort rules md5... ");
update_all_status($static_output);
-download_file_with_progress_bar($dl_md5, $tmpfname);
+download_file_with_progress_bar($dl_md5, $tmpfname . "/snortrules-snapshot-CURRENT.tar.gz.md5");
+verify_downloaded_file($tmpfname . "/snortrules-snapshot-CURRENT.tar.gz.md5");
/* verify downloaded rules signature */
verify_snort_rules_md5($tmpfname);
@@ -125,7 +128,7 @@ $static_output = gettext("Your snort rules are now up to date.");
update_all_status($static_output);
/* cleanup temporary directory */
-exec("rm -rf {$tmpfname};");
+//exec("rm -rf {$tmpfname};");
/* hide progress bar and lets end this party */
hide_progress_bar_status();
@@ -137,6 +140,38 @@ hide_progress_bar_status();
<?php
+function check_for_common_errors($filename) {
+ $contents = file_get_contents($filename);
+ if(stristr($contents, "You don't have permission")) {
+ update_all_status("An error occured. Scroll down to inspect it's contents.");
+ hide_progress_bar_status();
+ echo "<center><div id='error' style='background:white;width:90%'>";
+ echo "&nbsp;<p>";
+ echo "The following error occured while downloading the snort rules file from snort.org:<p>";
+ echo $contents;
+ echo "&nbsp;<p>";
+ echo "</div></center>";
+ scroll_down_to_bottom_of_page();
+ exit;
+ }
+}
+
+function scroll_down_to_bottom_of_page() {
+ echo "\n<script type=\"text/javascript\">parent.scrollTo(0,1500);\n</script>";
+}
+
+function verify_downloaded_file($filename) {
+ update_all_status("Checking {$filename}...");
+ check_for_common_errors($filename);
+ update_all_status("Verifying {$filename}...");
+ if(!file_exists($filename)) {
+ update_all_status("Could not fetch snort rules ({$filename}). Check oinkid key and dns and try again.");
+ hide_progress_bar_status();
+ exit;
+ }
+ update_all_status("Verifyied {$filename}.");
+}
+
function extract_snort_rules_md5($tmpfname) {
$static_output = gettext("Extracting snort rules...");
update_all_status($static_output);