config option to start ping daemon
[freeside.git] / FS / bin / freeside-pingd
index 9141e5f..fc9f8a3 100644 (file)
@@ -2,10 +2,11 @@
 
 use strict;
 use FS::Daemon ':all';
-use FS::Misc::Getopt;
 use FS::UID qw(dbh adminsuidsetup);
 use FS::Record qw( dbh qsearch qsearchs );
 use FS::addr_status;
+use FS::Conf;
+use Getopt::Std;
 use Net::Ping;
 
 my @TARGETS = (
@@ -14,14 +15,16 @@ my @TARGETS = (
   # could add others here
 );
 
-my $interval = 300; # seconds
 my $timeout  = 5.0; # seconds
 
 # useful opts: scan interval, timeout, verbose, max forks
 # maybe useful opts: interface, protocol, packet size, no-fork
 
+my $interval;
+
 our %opt;
-getopts('vxi:');
+getopts('vxi:', \%opt);
+my $user = shift or die usage();
 
 if (!$opt{x}) {
   daemonize1('freeside-pingd');
@@ -33,9 +36,22 @@ if ($opt{i}) {
   $interval = $opt{i};
 }
 
-adminsuidsetup($opt{user});
+sub debug {
+  warn(@_, "\n") if $opt{v};
+}
+
+adminsuidsetup($user);
 $FS::UID::AutoCommit = 1;
 
+if ( !$interval ) {
+  my $conf = FS::Conf->new;
+  $interval = $conf->config('pingd-interval');
+  if ( !$interval ) {
+    debug("no pingd-interval configured; exiting");
+    exit(0);
+  }
+}
+
 while(1) {
   daemon_reconnect();
   my @addrs_to_scan;
@@ -111,3 +127,9 @@ sub scan {
   }
 }
 
+sub usage {
+  "Usage:
+  freeside-pingd [ -i INTERVAL ] [ -v ] [ -x ] <username>
+";
+}
+