Standardized to create logfiles anew instead of append.
authorAndrew DeFaria <Andrew@DeFaria.com>
Tue, 16 Mar 2021 01:19:58 +0000 (18:19 -0700)
committerAndrew DeFaria <Andrew@DeFaria.com>
Tue, 16 Mar 2021 01:19:58 +0000 (18:19 -0700)
bin/announceEmail.pl
bin/cleantmp.pl
bin/tunnel.pl

index 07cb6db..2826ed3 100755 (executable)
@@ -31,23 +31,28 @@ $Date: 2019/04/04 13:40:10 $
 
 =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
 
@@ -104,9 +109,6 @@ my %opts = (
   username    => $ENV{USER},
   password    => $ENV{PASSWORD},
   imap        => $defaultIMAPServer,
-  usessl      => 0,
-  useblocking => 0,
-  announce    => 0,
 );
 
 sub interrupted {
@@ -155,18 +157,21 @@ sub Connect2IMAP() {
 
 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{$_}) {
@@ -177,6 +182,7 @@ sub MonitorMail() {
     } # if
   } # for
 
+  $log->dbug("Processing new unseen messages");
   for (keys %newUnseen) {
     next if $unseen{$_};
 
@@ -208,7 +214,9 @@ sub MonitorMail() {
 
     # 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 {
@@ -218,16 +226,21 @@ sub MonitorMail() {
     $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;
 
@@ -272,6 +285,7 @@ GetOptions(
   'usessl',
   'useblocking',
   'announce!',
+  'append',
 ) || pod2usage;
 
 unless ($opts{password}) {
@@ -287,15 +301,16 @@ if ($opts{username} =~ /.*\@(.*)$/) {
 
 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;
index c7b1b19..4b42cbe 100755 (executable)
@@ -46,6 +46,8 @@ $Date: $
    -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
@@ -80,6 +82,7 @@ my %opts = (
   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',
@@ -161,13 +164,19 @@ GetOptions (
   '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");
 
@@ -186,7 +195,12 @@ $monitor->watch({
 
 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;
index 775eaf2..9472e88 100755 (executable)
@@ -30,22 +30,22 @@ $Date: $
 
 =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
 
@@ -180,6 +180,7 @@ GetOptions (
   'announce!',
   'maxretries=i',
   'daemon!',
+  'append',
 ) || Usage;
 
 # Turn off daemon mode if we are in the Perl debugger;
@@ -191,13 +192,18 @@ $log = Logger->new(
   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;