=head1 SYNOPSIS
- Usage: announceEmail.pl [-usa|ge] [-h|elp] [-v|erbose] [-de|bug] [-da|emon]
+ Usage: announceEmail.pl [-usa|ge] [-h|elp] [-v|erbose] [-de|bug]
[-use|rname <username>] [-p|assword <password>]
- [-i|map <server]
+ [-i|map <server>]
+ [-an|nouce] [-ap|pend] [-da|emon] [-n|name <name>]
+ [-uses|sl] [-useb|locking]
Where:
- -usa|ge: Print this usage
- -h|elp: Detailed help
- -v|erbose: Verbose mode (Default: -verbose)
- -de|bug: Turn on debugging (Default: Off)
- -da|emon: Run in daemon mode (Default: -daemon)
- -user|name: User name to log in with (Default: $USER)
- -p|assword: Password to use (Default: prompted)
- -n|ame: Name of account (Default: imap)
- -i|map: IMAP server to talk to (Default: defaria.com)
- -uses|sl: Whether or not to use SSL to connect (Default: False)
+ -usa|ge Print this usage
+ -h|elp Detailed help
+ -v|erbose Verbose mode (Default: -verbose)
+ -de|bug Turn on debugging (Default: Off)
+
+ -user|name User name to log in with (Default: $USER)
+ -p|assword Password to use (Default: prompted)
+ -i|map IMAP server to talk to (Default: defaria.com)
+
+ -an|nounce Announce startup (Default: False)
+ -ap|pend Append to logfile (Default: Noappend)
+ -da|emon Run in daemon mode (Default: -daemon)
+ -n|ame Name of account (Default: imap)
+ -uses|sl Whether or not to use SSL to connect (Default: False)
-useb|locking Whether to block on socket (Default: False)
- -a-nnounce Announce startup (Default: False)
=head1 DESCRIPTION
username => $ENV{USER},
password => $ENV{PASSWORD},
imap => $defaultIMAPServer,
- usessl => 0,
- useblocking => 0,
- announce => 0,
);
sub interrupted {
sub MonitorMail() {
MONITORMAIL:
+ $log->dbug("Top of MonitorMail loop");
# First close and reselect the INBOX to get its current status
$IMAP->close;
$IMAP->select('INBOX')
or $log->err("Unable to select INBOX - ". $IMAP->errstr(), 1);
+ $log->dbug("Closed and reselected INBOX");
# Go through all of the unseen messages and add them to %unseen if they were
# not there already from a prior run and read
my %newUnseen = unseenMsgs;
# Now clean out any messages in %unseen that were not in the %newUnseen and
# marked as previously read
+ $log->dbug("Cleaning out unseen");
for (keys %unseen) {
if (defined $newUnseen{$_}) {
if ($unseen{$_}) {
} # if
} # for
+ $log->dbug("Processing new unseen messages");
for (keys %newUnseen) {
next if $unseen{$_};
# Only announce if after 6 Am. Note this will announce up until
# midnight but that's ok. I want midnight to 6 Am as silent time.
+ $log->dbug("About to speak/log");
if ($hour >= 7) {
+ $log->dbug("Calling speak");
speak $msg, $log;
$log->msg($logmsg);
} else {
$unseen{$_} = 1;
} # for
+ # Let's time things
+ my $startTime = time;
+
# Re-establish callback
+ $log->dbug("Evaling idle");
eval { $IMAP->idle(\&MonitorMail) };
# If we return from idle then the server went away for some reason. With Gmail
# the server seems to time out around 30-40 minutes. Here we simply reconnect
# to the imap server and continue to MonitorMail.
- $log->dbug("MonitorMail: Connection to $opts{imap} ended. Reconnecting");
+ $log->dbug("MonitorMail: Connection to $opts{imap} ended - lasted "
+ . howlong $startTime);
# Destroy current IMAP connection
- $log->dbug("MonitorMail: Destorying IMAP connection to $opts{imap}");
+ $log->dbug("MonitorMail: Destroying IMAP connection to $opts{imap}");
undef $IMAP;
'usessl',
'useblocking',
'announce!',
+ 'append',
) || pod2usage;
unless ($opts{password}) {
if ($opts{daemon}) {
# Perl complains if we reference $DB::OUT only once
- my $foo = $DB::OUT;
- EnterDaemonMode unless defined $DB::OUT;
+ no warnings;
+ EnterDaemonMode unless defined $DB::OUT or get_debug;
+ use warnings;
} # if
$log = Logger->new(
path => '/var/local/log',
name => "$Logger::me.$opts{name}",
timestamped => 'yes',
- append => 'yes',
+ append => $opts{append},
);
Connect2IMAP;
-c|onf <file>: Config file holding patterns to match (Default:
.../etc/cleantmp.conf)
-l|ogpath <path>: Path to logfile (Default: /var/log)
+ -a|ppend: Append to logfile (Default: Noappend)
+ -da|emon Run in daemon mode (Default: -daemon)
-s|leep <secs>: How many seconds to sleep between polls (Default: 60)
=head1 DESCRIPTION
help => sub { pod2usage(-verbose => 2)},
verbose => sub { set_verbose },
debug => sub { set_debug },
+ daemon => 1,
tmp => File::Spec->tmpdir(),
conf => "$FindBin::Bin/../etc/$script.conf",
logpath => '/var/local/log',
'help',
'verbose',
'debug',
+ 'daemon!',
'tmp=s',
'logpath=s',
'conf=s',
- 'sleep=i'
+ 'sleep=i',
+ 'append',
) or pod2usage;
-$log = Logger->new(path => $opts{logpath}, timestamped => 1);
+$log = Logger->new(
+ path => $opts{logpath},
+ timestamped => 1,
+ append => $opts{append},
+);
$log->msg("Starting $FindBin::Script");
set_debug if $DB::OUT;
-EnterDaemonMode unless $DB::OUT or get_debug;
+if ($opts{daemon}) {
+ # Perl complains if we reference $DB::OUT only once
+ no warnings;
+ EnterDaemonMode unless defined $DB::OUT or get_debug;
+ use warnings;
+} # if
while () {
$monitor->scan;
=head1 SYNOPSIS
- Usage: tunnel.pl [-u|sage] [-h|elp] [-ve|rbose] [-d|ebug]
-
- Where:
-
- -u|sage: Displays this usage
- -h|elp: Display full help
- -ve|rbose: Be verbose
- -d|ebug: Output debug messages
- -host1: First host for tunnel (Default: localhost)
- -port1: Port for host1
- -host2: Second host for tunnel (Default: defaria.com)
- -port2: Port for host2
- -a|nnounce: Whether to announce startup (Default false)
- -maxtretries: Maximum number of retry attempt to reestablish tunnel
- (Default 3)
- -nodaemon: Whether to go into daemon mode (Default: Daemon mode)
+ Usage: tunnel.pl [-u|sage] [-h|elp] [-ve|rbose] [-d|ebug]
+
+ Where:
+ -u|sage: Displays this usage
+ -h|elp: Display full help
+ -ve|rbose: Be verbose
+ -d|ebug: Output debug messages
+ -host1: First host for tunnel (Default: localhost)
+ -port1: Port for host1
+ -host2: Second host for tunnel (Default: defaria.com)
+ -port2: Port for host2
+ -a|nnounce: Whether to announce startup (Default false)
+ -ap|pend Append to logfile (Default: Noappend)
+ -maxtretries: Maximum number of retry attempt to reestablish tunnel
+ (Default 3)
+ -nodaemon: Whether to go into daemon mode (Default: Daemon mode)
=head1 DESCRIPTION
'announce!',
'maxretries=i',
'daemon!',
+ 'append',
) || Usage;
# Turn off daemon mode if we are in the Perl debugger;
path => '/var/local/log',
name => "$Logger::me",
timestamped => 'yes',
- append => 'yes',
+ append => $opts{append},
);
$log->msg("$FindBin::Script v$VERSION");
$SIG{INT} = $SIG{TERM} = \&interrupt;
-EnterDaemonMode if $opts{daemon};
+if ($opts{daemon}) {
+ # Perl complains if we reference $DB::OUT only once
+ no warnings;
+ EnterDaemonMode unless defined $DB::OUT or get_debug;
+ use warnings;
+} # if
tunnel;