summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/Daemon.pm10
-rw-r--r--FS/bin/freeside-cdrd31
-rw-r--r--init.d/freeside-init40
3 files changed, 62 insertions, 19 deletions
diff --git a/FS/FS/Daemon.pm b/FS/FS/Daemon.pm
index 7e0d45c..ca18134 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 ef420b5..882fd54 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 1f3ce2b..54ebea2 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
;;