diff options
author | jim-p <jimp@pfsense.org> | 2013-10-01 16:36:05 -0400 |
---|---|---|
committer | jim-p <jimp@pfsense.org> | 2013-10-01 16:36:30 -0400 |
commit | e9a1dee7011badfeb464c5b10d7721b42389858e (patch) | |
tree | afe0750df54fab285feb7bea5c8deae52bcd1d36 | |
parent | 237ff43cb71026b0a912ae772a0916e69b9bdedd (diff) | |
download | pfsense-packages-e9a1dee7011badfeb464c5b10d7721b42389858e.tar.gz pfsense-packages-e9a1dee7011badfeb464c5b10d7721b42389858e.tar.bz2 pfsense-packages-e9a1dee7011badfeb464c5b10d7721b42389858e.zip |
Add e-mail capability to the arpwatch package. Only works on 2.1+
-rw-r--r-- | config/arpwatch.xml | 26 | ||||
-rw-r--r-- | config/sm.php | 41 |
2 files changed, 63 insertions, 4 deletions
diff --git a/config/arpwatch.xml b/config/arpwatch.xml index e8faa3b0..18c75029 100644 --- a/config/arpwatch.xml +++ b/config/arpwatch.xml @@ -41,11 +41,11 @@ /* ========================================================================== */ ]]> </copyright> - <description>Describe your package here</description> - <requirements>Describe your package requirements here</requirements> + <description>ARP Monitoring Daemon</description> + <requirements>None</requirements> <faq>Currently there are no FAQ items provided.</faq> <name>arpwatch</name> - <version>2.1.a13</version> + <version>2.1.a14 pkg v1.1</version> <title>arpwatch: Settings</title> <aftersaveredirect>pkg_edit.php?xml=arpwatch.xml&id=0</aftersaveredirect> <menu> @@ -77,6 +77,11 @@ <chmod>a+rx</chmod> <item>http://www.pfsense.com/packages/config/arpwatch_reports.php</item> </additional_files_needed> + <additional_files_needed> + <prefix>/usr/sbin/</prefix> + <chmod>a+rx</chmod> + <item>http://www.pfsense.com/packages/config/sm.php</item> + </additional_files_needed> <fields> <field> <fielddescr>Listening Interface</fielddescr> @@ -84,11 +89,18 @@ <description>Choose the desired listening interface here.</description> <type>interfaces_selection</type> </field> + <field> + <fielddescr>Enable E-mail Notifications</fielddescr> + <fieldname>enable_email</fieldname> + <type>checkbox</type> + <description>Sends an E-mail notification for each new station and ARP change as they are seen.<br/>NOTE: Only works on pfSense 2.1 or later.<br/>Configure SMTP and address settings in System > Advanced on the Notifications tab</description> + </field> </fields> <custom_php_global_functions> <![CDATA[ function sync_package_arpwatch() { global $config; + $pf_version=substr(trim(file_get_contents("/etc/version")),0,3); conf_mount_rw(); config_lock(); $log_file = "/var/log/arp.dat"; @@ -97,9 +109,14 @@ } else { $int = $config['installedpackages']['arpwatch']['config'][0]['interface']; } + $mail = ""; + if(($pf_version > 2.0) && (isset($_POST['enable_email']) || ($config['installedpackages']['arpwatch']['config'][0]['enable_email'] == "on"))) { + if (!empty($config['notifications']['smtp']['notifyemailaddress'])) + $mail = " -m {$config['notifications']['smtp']['notifyemailaddress']}"; + } $int = convert_friendly_interface_to_real_interface_name($int); $start = "touch {$log_file}\n"; - $start .= "/usr/local/sbin/arpwatch -d -f {$log_file} -i {$int} > /var/log/arpwatch.reports 2>&1 &"; + $start .= "/usr/local/sbin/arpwatch -d -f {$log_file} -i {$int} {$mail} > /var/log/arpwatch.reports 2>&1 &"; $stop = "/usr/bin/killall arpwatch"; write_rcfile(array( "file" => "arpwatch.sh", @@ -121,6 +138,7 @@ <custom_php_install_command> <![CDATA[ unlink_if_exists("/usr/local/etc/rc.d/arpwatch.sh"); + @link("/usr/sbin/sm.php", "/usr/sbin/sendmail"); ]]> </custom_php_install_command> </packagegui> diff --git a/config/sm.php b/config/sm.php new file mode 100644 index 00000000..e2c56fc4 --- /dev/null +++ b/config/sm.php @@ -0,0 +1,41 @@ +#!/usr/local/bin/php -q +<?php +require_once("config.inc"); +require_once("globals.inc"); +require_once("notices.inc"); + +$pf_version=substr(trim(file_get_contents("/etc/version")),0,3); +if (($pf_version < 2.1)) { + $error = "Sending e-mail on this version of pfSense is not supported. Please use pfSense 2.1 or later"; + log_error($error); + echo "{$error}\n"; + return; +} + +$options = getopt("s::"); + +$message = ""; + +if($options['s'] <> "") { + $subject = $options['s']; +} + + +$in = file("php://stdin"); +foreach($in as $line){ + if ( (substr($line, 0, 6) == "From: ") + || (substr($line, 0, 6) == "Date: ") + || (substr($line, 0, 4) == "To: ")) + continue; + if (empty($subject) && (substr($line, 0, 9) == "Subject: ")) { + $subject = substr($line, 9); + continue; + } + $message .= "$line"; +} + +if (!empty($subject)) + send_smtp_message($message, $subject); +else + send_smtp_message($message); +?>
\ No newline at end of file |