Package: iwatch
Version: 0.2.1-3
Severity: important
not all listed event types to alert on actually do anything...eg modify, attrib
etc
Theyre are listed in the code and and have configuration options for them.
The code simply doesnt look at the extra options.
I have written a patch which takes care of most of the missing ones.
I've also checked the latest version upstream which also is missing the
requried code
-- System Information:
Debian Release: 5.0.4
APT prefers stable
APT policy: (500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.26-2-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages iwatch depends on:
ii libevent-perl1.11-1 Generic Perl event loop
ii liblinux-inotify2-perl 1:1.1-2.1+b1scalable directory/file change not
ii libmail-sendmail-perl0.79-5 Send email from a perl script
ii libxml-simpleobject-libx 0.53-1 Simple oo representation of an XML
ii perl-modules 5.10.0-19lenny2 Core Perl modules
ii postfix [mail-transport- 2.5.5-1.1 High-performance mail transport ag
iwatch recommends no packages.
iwatch suggests no packages.
-- no debconf information
--- ../iwatch-current/iwatch2010-05-11 23:02:51.0 -0500
+++ ./iwatch2010-05-11 22:56:14.0 -0500
@@ -74,7 +74,7 @@ my %InotifyEvents = (
'isdir' = IN_ISDIR,
'oneshot' = IN_ONESHOT,
'all_events' = IN_ALL_EVENTS,
- 'default' =
IN_CLOSE_WRITE|IN_CREATE|IN_DELETE|IN_MOVE|IN_DELETE_SELF|IN_MOVE_SELF,
+ 'default' =
IN_ATTRIB|IN_MODIFY|IN_CLOSE_WRITE|IN_CREATE|IN_DELETE|IN_MOVE|IN_DELETE_SELF|IN_MOVE_SELF,
);
my %InotifyEventNames;
foreach my $EventName (keys %InotifyEvents) {
@@ -334,15 +334,50 @@ sub mywatch {
syslog(info,$Message) if($Path-{'syslog'});
}
if($e-IN_CREATE -d $Filename $Path-{'type'} eq recursive) {
-print STDERR [$now] * Directory $Filename is watched\n if($VERBOSE0);
-syslog(info,* Directory $Filename is watched) if($Path-{'syslog'});
-print STDERR Can't watch $Filename: $!\n
- if(!$inotify-watch ($Filename, $Path-{'mask'}, \mywatch));
+if (-d $Filename $Path-{'type'} eq recursive) {
+print STDERR [$now] * Directory $Filename is watched\n
if($VERBOSE0);
+syslog(info,* Directory $Filename is watched)
if($Path-{'syslog'});
+print STDERR Can't watch $Filename: $!\n if(!$inotify-watch
($Filename, $Path-{'mask'}, \mywatch));
+}
+elsif ($Path-{'type'} eq recursive) {
+$localMessage = * $Filename created\n;
+$Message = $Message\n$localMessage;
+$Mail{Subject} = [$PROGRAM] . hostname() . : $Filename created;
+print STDERR [$now] $localMessage if($VERBOSE0);
+syslog(info,$localMessage) if($Path-{'syslog'});
+}
+$localMessage = * $Filename opened for writing closed\n;
+$Message = $Message\n$localMessage;
+$Mail{Subject} = [$PROGRAM] . hostname() . : $Filename opened for
writing closed;
+print STDERR [$now] $localMessage if($VERBOSE0);
+syslog(info,$localMessage) if($Path-{'syslog'});
+
+ }
+ elsif($e-IN_ACCESS) {
+$localMessage = * $Filename accessed\n;
+$Message = $Message\n$localMessage;
+$Mail{Subject} = [$PROGRAM] . hostname() . : $Filename accessed;
+print STDERR [$now] $localMessage if($VERBOSE0);
+syslog(info,$localMessage) if($Path-{'syslog'});
+ }
+ elsif($e-IN_ATTRIB) {
+$localMessage = * $Filename attributes changed\n;
+$Message = $Message\n$localMessage;
+$Mail{Subject} = [$PROGRAM] . hostname() . : $Filename attributes
changed;
+print STDERR [$now] $localMessage if($VERBOSE0);
+syslog(info,$localMessage) if($Path-{'syslog'});
+ }
+ elsif($e-IN_CLOSE_NOWRITE) {
+$localMessage = * $Filename opened for reading closed\n;
+$Message = $Message\n$localMessage;
+$Mail{Subject} = [$PROGRAM] . hostname() . : $Filename opened for
reading closed;
+print STDERR [$now] $localMessage if($VERBOSE0);
+syslog(info,$localMessage) if($Path-{'syslog'});
}
elsif($e-IN_CLOSE_WRITE -f $Filename) {
-$localMessage = * $Filename is closed\n;
+$localMessage = * $Filename opened for writing closed\n;
$Message = $Message\n$localMessage;
-$Mail{Subject} = [$PROGRAM] . hostname() . : $Filename is changed;
+$Mail{Subject} = [$PROGRAM] . hostname() . : $Filename opened for
writing closed;
print STDERR [$now] $localMessage if($VERBOSE0);
syslog(info,$localMessage) if($Path-{'syslog'});
}
@@ -353,6 +388,13 @@ sub mywatch {
print STDERR [$now] $localMessage if($VERBOSE0);
syslog(info,$localMessage) if($Path-{'syslog'});
}
+ elsif($e-IN_MODIFY) {
+$localMessage = * $Filename modified\n;
+$Message = $Message\n$localMessage;
+$Mail{Subject} = [$PROGRAM] . hostname() . : $Filename modified;
+print STDERR [$now] $localMessage