diff options
| -rw-r--r-- | FS/FS/Daemon.pm | 10 | ||||
| -rw-r--r-- | FS/bin/freeside-cdrd | 31 | ||||
| -rw-r--r-- | init.d/freeside-init | 40 | 
3 files changed, 62 insertions, 19 deletions
| diff --git a/FS/FS/Daemon.pm b/FS/FS/Daemon.pm index 7e0d45c20..ca181345a 100644 --- a/FS/FS/Daemon.pm +++ b/FS/FS/Daemon.pm @@ -12,7 +12,10 @@ use Date::Format;  #avoid duplicate code.  eventually this should use something from CPAN.  @ISA = qw(Exporter); -@EXPORT_OK = qw( daemonize1 drop_root daemonize2 sigint sigterm logfile ); +@EXPORT_OK = qw( +  daemonize1 drop_root daemonize2 myexit logfile sigint sigterm +); +%EXPORT_TAGS = ( 'all' => [ @EXPORT_OK ] );  $pid_dir = '/var/run'; @@ -74,6 +77,11 @@ sub sigterm { $sigterm; }  sub logfile { $logfile = shift; } #_logmsg('test'); } +sub myexit { +  unlink $pid_file if -e $pid_file; +  exit;   +} +  sub _die {    my $msg = shift;    unlink $pid_file if -e $pid_file; diff --git a/FS/bin/freeside-cdrd b/FS/bin/freeside-cdrd index ef420b53b..882fd5402 100644 --- a/FS/bin/freeside-cdrd +++ b/FS/bin/freeside-cdrd @@ -1,7 +1,7 @@  #!/usr/bin/perl -w  use strict; -use FS::Daemon qw(daemonize1 drop_root logfile daemonize2 sigint sigterm); +use FS::Daemon ':all'; #daemonize1 drop_root daemonize2 myexit logfile sig*  use FS::UID qw(adminsuidsetup);  use FS::Record qw(qsearch ); #qsearchs);  #use FS::cdr; @@ -20,6 +20,9 @@ logfile( "%%%FREESIDE_LOG%%%/cdrd-log.". $FS::UID::datasrc );  daemonize2(); +die "not running; no voip_cdr package defs w/ bill_every_call and customer pkgs" +  unless _shouldrun(); +  #--  my $addl_from = @@ -66,7 +69,7 @@ while (1) {      $found = 1; -    my $work_cust_pkg = $cust_pkg; +    #my $work_cust_pkg = $cust_pkg;      my $cust_main = $cust_pkg->cust_main; @@ -81,13 +84,35 @@ while (1) {    } -  die "exiting" if sigterm() || sigint(); +  myexit() if sigterm() || sigint();    sleep 5; # unless $found;  }  #-- +sub _shouldrun { + +  my $extra_sql = +    ' AND 0 < ( SELECT COUNT(*) FROM cust_pkg +                  WHERE cust_pkg.pkgpart = part_pkg.pkgpart +                    AND ( cust_pkg.cancel IS NULL OR cust_pkg.cancel = 0 ) +              ) +    '; + +  my @part_pkg = +    grep $_->option('bill_every_call', 'hush'), +    qsearch({ +      'table'     => 'part_pkg', +      'hashref'   => { 'plan' => 'voip_cdr' }, +      'extra_sql' => $extra_sql, +    }) +  ; + +  scalar(@part_pkg); + +} +  sub usage {     die "Usage:\n\n  freeside-prepaidd user\n";  } diff --git a/init.d/freeside-init b/init.d/freeside-init index 1f3ce2bc5..54ebea297 100644 --- a/init.d/freeside-init +++ b/init.d/freeside-init @@ -43,35 +43,45 @@ case "$1" in    stop)          # Stop daemons.          echo -n "Stopping freeside-queued: " -        kill `cat /var/run/freeside-queued.pid` -        echo "done." - +        [ -e /var/run/freeside-queued.pid ] && kill `cat /var/run/freeside-queued.pid`          #and +        sleep 2;          killall freeside-queued - -        echo -n "Stopping freeside-sqlradius-radacctd: " -        kill `cat /var/run/freeside-sqlradius-radacctd.pid`          echo "done." -        echo -n "Stopping freeside-prepaidd: " -        kill `cat /var/run/freeside-prepaidd.pid` -        echo "done." +        if [ -e /var/run/freeside-sqlradius-radacctd.pid ]; then +          echo -n "Stopping freeside-sqlradius-radacctd: " +          kill `cat /var/run/freeside-sqlradius-radacctd.pid` +          echo "done." +        fi -        echo -n "Stopping freeside-cdrd: " -        kill `cat /var/run/freeside-cdrd.pid` -        echo "done." +        if [ -e /var/run/freeside-prepaidd.pid ]; then +          echo -n "Stopping freeside-prepaidd: " +          kill `cat /var/run/freeside-prepaidd.pid` +          echo "done." +        fi + +        if [ -e /var/run/freeside-cdrd.pid ]; then +          echo -n "Stopping freeside-cdrd: " +          kill `cat /var/run/freeside-cdrd.pid` +          echo "done." +        fi          if [ -e /var/run/freeside-selfservice-server.$SELFSERVICE_USER.pid ]          then            echo -n "Stopping (old) freeside-selfservice-server: "            kill `cat /var/run/freeside-selfservice-server.$SELFSERVICE_USER.pid`            rm /var/run/freeside-selfservice-server.$SELFSERVICE_USER.pid +          echo "done."          fi          for MACHINE in $SELFSERVICE_MACHINES; do -          echo -n "Stopping freeside-selfservice-server to $MACHINE: " -          kill `cat /var/run/freeside-selfservice-server.$SELFSERVICE_USER.$MACHINE.pid` -          echo "done." +          if [ -e /var/run/freeside-selfservice-server.$SELFSERVICE_USER.$MACHINE.pid ] +          then +            echo -n "Stopping freeside-selfservice-server to $MACHINE: " +            kill `cat /var/run/freeside-selfservice-server.$SELFSERVICE_USER.$MACHINE.pid` +            echo "done." +          fi          done          ;; | 
