Fixed bug in setbg
[clearscm.git] / bin / tunnel.pl
index 86cf076..084f661 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
 
@@ -71,6 +71,8 @@ use Logger;
 use Speak;
 use Utils;
 
+local $0 = $FindBin::Script;
+
 my $VERSION  = '$Revision: 1.0 $';
   ($VERSION) = ($VERSION =~ /\$Revision: (.*) /);
 
@@ -85,9 +87,13 @@ my %opts = (
   port2      => 25,
   remotehost => 'defaria.com',
   maxretries => 3,
-  daemon     => 1,
 );
 
+# Perlcritic complains if $DB::OUT is used only once.
+no warnings;
+$opts{daemon} = 1 unless defined $DB::OUT;
+use warnings;
+
 my ($log, $ssh);
 
 sub Report ($;$) {
@@ -120,7 +126,7 @@ sub tunnel() {
 RETRY:
   my ($fh, $filename) = tempfile;
 
-  my $ssh = Net::OpenSSH->new(
+  $ssh = Net::OpenSSH->new(
     $opts{remotehost},
     master_opts         => $tunnelStr,
     default_stderr_file => $filename
@@ -135,7 +141,7 @@ RETRY:
 
   unlink $filename;
 
-  if (grep /address already in use/i, @lines) {
+  if (grep { /address already in use/i } @lines) {
     Report 'Unable to start tunnel - Address already in use', 1;
   } else {
     my $msg  = 'Ssh tunnel ';
@@ -154,10 +160,6 @@ RETRY:
     Report("Ssh tunnel terminated unexpectedly - Maximum retry count hit ($opts{maxretries}) - giving up", 1)
       if $retryattempts++ >= $opts{maxretries};
 
-    $opts{announce} = $retryattempts;
-
-    Report 'Ssh tunnel terminated unexpectedly - Attempting restart';
-
     undef $ssh;
 
     goto RETRY;
@@ -180,24 +182,20 @@ GetOptions (
   'announce!',
   'maxretries=i',
   'daemon!',
+  'append',
 ) || Usage;
 
-# Turn off daemon mode if we are in the Perl debugger;
-no warnings; # Ignore warning about used only once $DB::OUT when not in debugger
-$opts{daemon} = 0 if defined $DB::OUT;
-use warnings;
-
 $log = Logger->new(
-  path        => '/var/log',
+  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};
+EnterDaemonMode unless $opts{daemon} and get_debug;
 
 tunnel;