diff --git a/FS/FS/Daemon/Preforking.pm b/FS/FS/Daemon/Preforking.pm index 98b4fa68c9..e37a151dad 100644 --- a/FS/FS/Daemon/Preforking.pm +++ b/FS/FS/Daemon/Preforking.pm @@ -99,6 +99,7 @@ sub daemon_run { server_spawn(MAX_PROCESSES); POE::Kernel->run(); + myexit(); #exit; } diff --git a/FS/bin/freeside-cdrd b/FS/bin/freeside-cdrd index 45d58789dd..e6376f0934 100644 --- a/FS/bin/freeside-cdrd +++ b/FS/bin/freeside-cdrd @@ -21,8 +21,10 @@ 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(); +do { + warn "not running; no voip_cdr package defs w/ bill_every_call and customer pkgs" + myexit(); +} unless _shouldrun(); #-- diff --git a/FS/bin/freeside-cdrrated b/FS/bin/freeside-cdrrated index 2966b2e4e6..65dedd1dfd 100644 --- a/FS/bin/freeside-cdrrated +++ b/FS/bin/freeside-cdrrated @@ -22,8 +22,10 @@ daemonize2(); our $conf = new FS::Conf; -die "not running; cdr-prerate conf option is off\n" - unless _shouldrun(); +do { + warn "not running; cdr-prerate conf option is off\n" + myexit(); +} unless _shouldrun(); #-- diff --git a/FS/bin/freeside-cdrrewrited b/FS/bin/freeside-cdrrewrited index 16f931fbf0..c8f5bcd841 100644 --- a/FS/bin/freeside-cdrrewrited +++ b/FS/bin/freeside-cdrrewrited @@ -24,9 +24,11 @@ daemonize2(); $conf = new FS::Conf; -die "not running; cdr-asterisk_forward_rewrite, cdr-charged_party_rewrite ". - " and cdr-taqua-accountcode_rewrite conf options are all off\n" - unless _shouldrun(); +do { + warn "not running; cdr-asterisk_forward_rewrite, cdr-charged_party_rewrite ". + " and cdr-taqua-accountcode_rewrite conf options are all off\n"; + myexit(); +} unless _shouldrun(); #-- diff --git a/FS/bin/freeside-selfservice-xmlrpcd b/FS/bin/freeside-selfservice-xmlrpcd index e9df40735a..afedbe0f27 100755 --- a/FS/bin/freeside-selfservice-xmlrpcd +++ b/FS/bin/freeside-selfservice-xmlrpcd @@ -1,6 +1,7 @@ #!/usr/bin/perl use FS::Daemon::Preforking qw( freeside_init1 freeside_init2 daemon_run ); +use FS::Daemon qw( myexit ); use FS::XMLRPC_Lite; #XMLRPC::Lite for XMLRPC::Serializer #and XMLRPC::Transport::HTTP @@ -26,8 +27,10 @@ freeside_init2(ME); FS::ClientAPI::Signup::clear_cache(); my $conf = new FS::Conf; -die "not running; selfservice-xmlrpc conf option is off\n" - unless $conf->exists('selfservice-xmlrpc'); +do { + warn "not running; selfservice-xmlrpc conf option is off\n" + myexit(); +} unless $conf->exists('selfservice-xmlrpc'); daemon_run( 'port' => 8080, 'handle_request' => sub { diff --git a/FS/bin/freeside-sqlradius-radacctd b/FS/bin/freeside-sqlradius-radacctd index 7b2d04dc73..72f19f589f 100644 --- a/FS/bin/freeside-sqlradius-radacctd +++ b/FS/bin/freeside-sqlradius-radacctd @@ -5,7 +5,7 @@ use vars qw( @part_export ); use subs qw(myshutdown); use POSIX qw(:sys_wait_h); #use IO::File; -use FS::Daemon qw(daemonize1 drop_root logfile daemonize2 sigint sigterm); +use FS::Daemon qw(daemonize1 drop_root logfile daemonize2 sigint sigterm myexit); use FS::UID qw(adminsuidsetup); #forksuidsetup driver_name dbh myconnect); use FS::Record qw(qsearch); # qsearchs); use FS::part_export; @@ -32,9 +32,11 @@ daemonize2(); my @part_export = FS::part_export::sqlradius->all_sqlradius_withaccounting(); -die "no sqlradius, sqlradius_withdomain, radiator or phone_sqlradius exports". +do { + warn "no sqlradius, sqlradius_withdomain, radiator or phone_sqlradius exports". " without ignore_accounting" - unless @part_export; + myexit(); +} unless @part_export; while (1) { @@ -89,7 +91,7 @@ sub myshutdown { &reap_kids; } warn "abandoning children" if grep $_->{'_radacct_kid'}, @part_export; - die "exiting"; + myexit(); } sub reap_kids { diff --git a/FS/bin/freeside-torrus-srvderive b/FS/bin/freeside-torrus-srvderive index 5ad23aba45..5e7b811ff7 100644 --- a/FS/bin/freeside-torrus-srvderive +++ b/FS/bin/freeside-torrus-srvderive @@ -29,8 +29,10 @@ daemonize2(); our $conf = new FS::Conf; -die "not running: network_monitoring_system not Torrus_Internal\n" - unless _shouldrun(); +do { + warn "not running: network_monitoring_system not Torrus_Internal\n" + myexit(); +} unless _shouldrun(); #-- diff --git a/FS/bin/freeside-xmlrpcd b/FS/bin/freeside-xmlrpcd index 724c5adb39..3d826fc7eb 100644 --- a/FS/bin/freeside-xmlrpcd +++ b/FS/bin/freeside-xmlrpcd @@ -1,6 +1,7 @@ #!/usr/bin/perl use FS::Daemon::Preforking qw( freeside_init1 freeside_init2 daemon_run ); +use FS::Daemon qw( myexit ); use FS::XMLRPC_Lite; #XMLRPC::Lite for XMLRPC::Serializer #and XMLRPC::Transport::HTTP @@ -20,10 +21,15 @@ freeside_init1(ME); freeside_init2(ME); my $conf = new FS::Conf; -die "not running; xmlrpc_api conf option is off\n" - unless $conf->exists('xmlrpc_api'); -die "not running; api_shared_secret conf option is not set\n" - unless $conf->config('api_shared_secret'); +do { + warn "not running; xmlrpc_api conf option is off"; + myexit(); +} unless $conf->exists('xmlrpc_api'); + +do { + warn "not running; api_shared_secret conf option is not set"; + myexit(); +} unless $conf->config('api_shared_secret'); daemon_run( 'port' => 8008, 'handle_request' => sub { diff --git a/Makefile b/Makefile index 271a361159..cb77ccf17b 100644 --- a/Makefile +++ b/Makefile @@ -44,15 +44,53 @@ FREESIDE_DOCUMENT_ROOT = /var/www/freeside #apache #FREESIDE_DOCUMENT_ROOT = /usr/local/apache/htdocs/freeside + +# /etc/default/freeside on Debian/Ubuntu +FREESIDE_DEFAULTS = /etc/sysconfig/freeside +FREESIDE_BIN = /usr/bin +LOCKFILE_DIR = /var/lock/subsys +PIDFILE_DIR = /var/run + #deb, redhat, fedora, mandrake, suse, others? -INIT_FILE = /etc/init.d/freeside +INIT_FILE_QUEUED = /etc/init.d/freeside-queued +INIT_FILE_PREPAIDD = /etc/init.d/freeside-prepaidd +INIT_FILE_XMLRPCD = /etc/init.d/freeside-xmlrpcd +INIT_FILE_CDRREWRITED = /etc/init.d/freeside-cdrrewrited +INIT_FILE_CDRD = /etc/init.d/freeside-cdrd +INIT_FILE_CDRRATED = /etc/init.d/freeside-cdrrated +INIT_FILE_TORRUS_SRVDERIVE = /etc/init.d/freeside-torrus-srvderive +INIT_FILE_SQLRADIUS_RADACCTD = /etc/init.d/freeside-sqlradius-radacctd +INIT_FILE_TORRUS = /etc/init.d/freeside-torrus +INIT_FILE_SELFSERVICE_XMLRPCD = /etc/init.d/freeside-selfservice-xmlrpcd +INIT_FILE_SELFSERVICE_SERVER = /etc/init.d/freeside-selfservice-server +INIT_FILE_FUNCTIONS = /etc/init.d/freeside-functions #freebsd #INIT_FILE = /usr/local/etc/rc.d/011.freeside.sh #deb -INIT_INSTALL = PATH=$PATH:/sbin /usr/sbin/update-rc.d freeside defaults 23 01 +#INIT_INSTALL = PATH=$PATH:/sbin /usr/sbin/update-rc.d freeside defaults 23 01 #redhat, fedora -#INIT_INSTALL = /sbin/chkconfig freeside on +# INIT_INSTALL_QUEUED = PATH=$PATH:/sbin /usr/sbin/update-rc.d freeside-queued defaults 23 01 +INIT_INSTALL_QUEUED = /sbin/chkconfig freeside-queued on +# INIT_INSTALL_PREPAIDD = PATH=$PATH:/sbin /usr/sbin/update-rc.d freeside-prepaidd defaults 23 01 +INIT_INSTALL_PREPAIDD = /sbin/chkconfig freeside-prepaidd on +# INIT_INSTALL_XMLRPCD = PATH=$PATH:/sbin /usr/sbin/update-rc.d freeside-xmlrpcd defaults 23 01 +INIT_INSTALL_XMLRPCD = /sbin/chkconfig freeside-xmlrpcd on +# INIT_INSTALL_CDRREWRITED = PATH=$PATH:/sbin /usr/sbin/update-rc.d freeside-cdrrewrited defaults 23 01 +INIT_INSTALL_CDRREWRITED = /sbin/chkconfig freeside-cdrrewrited on +# INIT_INSTALL_CDRD = PATH=$PATH:/sbin /usr/sbin/update-rc.d freeside-cdrd defaults 23 01 +INIT_INSTALL_CDRD = /sbin/chkconfig freeside-cdrd on +# INIT_INSTALL_TORRUS_SRVDERIVE = PATH=$PATH:/sbin /usr/sbin/update-rc.d freeside-torrus-srvderive defaults 23 01 +INIT_INSTALL_TORRUS_SRVDERIVE = /sbin/chkconfig freeside-torrus-srvderive on +# INIT_INSTALL_SQLRADIUS_RADACCTD = PATH=$PATH:/sbin /usr/sbin/update-rc.d freeside-sqlradius-radacctd defaults 23 01 +INIT_INSTALL_SQLRADIUS_RADACCTD = /sbin/chkconfig freeside-sqlradius-radacctd on +# INIT_INSTALL_TORRUS = PATH=$PATH:/sbin /usr/sbin/update-rc.d freeside-torrus defaults 23 01 +INIT_INSTALL_TORRUS = /sbin/chkconfig freeside-torrus on +# INIT_INSTALL_SELFSERVICE_XMLRPCD = PATH=$PATH:/sbin /usr/sbin/update-rc.d freeside-selfservice-xmlrpcd defaults 23 01 +INIT_INSTALL_SELFSERVICE_XMLRPCD = /sbin/chkconfig freeside-selfservice-xmlrpcd on +# INIT_INSTALL_SELFSERVICE_SERVER = PATH=$PATH:/sbin /usr/sbin/update-rc.d freeside-selfservice-server defaults 23 01 +INIT_INSTALL_SELFSERVICE_SERVER = /sbin/chkconfig freeside-selfservice-server on + #not necessary (freebsd) #INIT_INSTALL = /usr/bin/true @@ -74,11 +112,11 @@ HTTPD_RESTART = /etc/init.d/apache2 restart APACHE_CONF = /etc/apache2/conf-available #deb (3.1+), apache2 #APACHE_CONF = /etc/apache2/conf.d +# RHEL and derivatives +#APACHE_CONF = /etc/httpd/conf.d INSSERV_OVERRIDE = /etc/insserv/overrides -FREESIDE_RESTART = ${INIT_FILE} restart - #deb, redhat, fedora, mandrake, suse, others? INSTALLGROUP = root #freebsd, openbsd @@ -267,15 +305,101 @@ install-texmf: texhash /usr/local/share/texmf install-init: - #[ -e ${INIT_FILE} ] || install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-init ${INIT_FILE} - install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-init ${INIT_FILE} + install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-service.init.in ${INIT_FILE_QUEUED} perl -p -i -e "\ - s/%%%QUEUED_USER%%%/${QUEUED_USER}/g;\ - s/%%%API_USER%%%/${API_USER}/g;\ - s/%%%SELFSERVICE_USER%%%/${SELFSERVICE_USER}/g;\ - s/%%%SELFSERVICE_MACHINES%%%/${SELFSERVICE_MACHINES}/g;\ - " ${INIT_FILE} - ${INIT_INSTALL} + s|%%%SERVICE%%%|freeside-queued|g;\ + s|%%%STARTCOMMAND%%%|\${SERVICE} \${QUEUED_USER}|g;\ + s|%%%PIDFILE%%%|\${PIDFILE_DIR}/\${SERVICE}.pid|g;\ + " ${INIT_FILE_QUEUED} + + install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-service.init.in ${INIT_FILE_PREPAIDD} + perl -p -i -e "\ + s|%%%SERVICE%%%|freeside-prepaidd|g;\ + s|%%%STARTCOMMAND%%%|\${SERVICE} \${QUEUED_USER}|g;\ + s|%%%PIDFILE%%%|\${PIDFILE_DIR}/\${SERVICE}.pid|g;\ + " ${INIT_FILE_PREPAIDD} + + install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-service.init.in ${INIT_FILE_XMLRPCD} + perl -p -i -e "\ + s|%%%SERVICE%%%|freeside-xmlrpcd|g;\ + s|%%%STARTCOMMAND%%%|\${SERVICE} \${API_USER}|g;\ + s|%%%PIDFILE%%%|\${PIDFILE_DIR}/freeside/\${SERVICE}.pid|g;\ + " ${INIT_FILE_XMLRPCD} + + install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-service.init.in ${INIT_FILE_CDRREWRITED} + perl -p -i -e "\ + s|%%%SERVICE%%%|freeside-cdrrewrited|g;\ + s|%%%STARTCOMMAND%%%|\${SERVICE} \${QUEUED_USER}|g;\ + s|%%%PIDFILE%%%|\${PIDFILE_DIR}/\${SERVICE}.pid|g;\ + " ${INIT_FILE_CDRREWRITED} + + install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-service.init.in ${INIT_FILE_CDRD} + perl -p -i -e "\ + s|%%%SERVICE%%%|freeside-cdrd|g;\ + s|%%%STARTCOMMAND%%%|\${SERVICE} \${QUEUED_USER}|g;\ + s|%%%PIDFILE%%%|\${PIDFILE_DIR}/\${SERVICE}.pid|g;\ + " ${INIT_FILE_CDRREWRITED} + + install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-service.init.in ${INIT_FILE_CDRRATED} + perl -p -i -e "\ + s|%%%SERVICE%%%|freeside-cdrated|g;\ + s|%%%STARTCOMMAND%%%|\${SERVICE} \${QUEUED_USER}|g;\ + s|%%%PIDFILE%%%|\${PIDFILE_DIR}/\${SERVICE}.pid|g;\ + " ${INIT_FILE_CDRRATED} + + install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-service.init.in ${INIT_FILE_SELFSERVICE_XMLRPCD} + perl -p -i -e "\ + s|%%%SERVICE%%%|freeside-selfservice-xmlrpcd|g;\ + s|%%%STARTCOMMAND%%%|\${SERVICE} \${SELFSERVICE_USER}|g;\ + s|%%%PIDFILE%%%|\${PIDFILE_DIR}/\${SERVICE}.pid|g;\ + " ${INIT_FILE_SELFSERVICE_XMLRPCD} + + install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-service.init.in ${INIT_FILE_SQLRADIUS_RADACCTD} + perl -p -i -e "\ + s|%%%SERVICE%%%|freeside-sqlradius-radacctd|g;\ + s|%%%STARTCOMMAND%%%|\${SERVICE} \${QUEUED_USER}|g;\ + s|%%%PIDFILE%%%|\${PIDFILE_DIR}/\${SERVICE}.pid|g;\ + " ${INIT_FILE_SQLRADIUS_RADACCTD} + + install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-selfservice-server.init ${INIT_FILE_SELFSERVICE_SERVER} + install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-functions ${INIT_FILE_FUNCTIONS} + + + if [ ${TORRUS_ENABLED} -eq 1 ]; then \ + ( install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-service.init.in ${INIT_FILE_TORRUS_SRVDERIVE}; \ + install -o root -g ${INSTALLGROUP} -m 711 init.d/freeside-service.init.in ${INIT_FILE_TORRUS}; \ + perl -p -i -e "\ + s|%%%SERVICE%%%|torrus|g;\ + s|%%%STARTCOMMAND%%%|\${SERVICE} collector --tree=main|g;\ + s|%%%PIDFILE%%%|\${PIDFILE_DIR}/torrus/collector.main_?.pid|g;\ + " ${INIT_FILE_TORRUS}; \ + perl -p -i -e "\ + s|%%%SERVICE%%%|freeside-torrus-srvderive|g;\ + s|%%%STARTCOMMAND%%%|\${SERVICE} \${QUEUED_USER}|g;\ + s|%%%PIDFILE%%%|\${PIDFILE_DIR}/\${SERVICE}.pid|g;\ + " ${INIT_FILE_TORRUS_SRVDERIVE}; \ + $INIT_INSTALL_TORRUS; \ + $INIT_INSTALL_TORRUS_SRVDERIVE;\ + ); fi + + perl -p -i -e "\ + s|%%%FREESIDE_DEFAULTS%%%|${FREESIDE_DEFAULTS}|g;\ + s|%%%FREESIDE_BIN%%%|${FREESIDE_BIN}|g;\ + " init.d/freeside-functions + + ${INIT_INSTALL_QUEUED} + ${INIT_INSTALL_PREPAIDD} + ${INIT_INSTALL_XMLRPCD} + ${INIT_INSTALL_CDRREWRITED} + ${INIT_INSTALL_CDRD} + ${INIT_INSTALL_CDRRATED} + ${INIT_INSTALL_SQLRADIUS_RADACCTD} + ${INIT_INSTALL_SELFSERVICE_XMLRPCD} + ${INIT_INSTALL_SELFSERVICE_SERVER} + + /bin/echo -e "#!/bin/bash\n\nLOCKFILE_DIR=${LOCKFILE_DIR}\nPIDFILE_DIR=${PIDFILE_DIR}" > ${FREESIDE_DEFAULTS} + /bin/echo -e "QUEUED_USER=${QUEUED_USER}\nAPI_USER=${API_USER}" >> ${FREESIDE_DEFAULTS} + /bin/echo -e "SELFSERVICE_USER=${SELFSERVICE_USER}\nSELFSERVICE_MACHINES=${SELFSERVICE_MACHINES}" >> ${FREESIDE_DEFAULTS} install-apache: [ -e ${APACHE_CONF}/freeside-base.conf ] && rm ${APACHE_CONF}/freeside-base.conf || true @@ -322,7 +446,6 @@ install: install-perl-modules install-docs install-init install-apache install-r deploy: install ${HTTPD_RESTART} - ${FREESIDE_RESTART} dev: dev-perl-modules dev-docs diff --git a/init.d/freeside-functions b/init.d/freeside-functions new file mode 100644 index 0000000000..9a86e9c5b8 --- /dev/null +++ b/init.d/freeside-functions @@ -0,0 +1,83 @@ +#!/bin/bash + +# These functions are used by Freeside's init scripts + +if [ -f /etc/rc.d/init.d/functions ] +then + . /etc/init.d/functions +elif [ -f /lib/lsb/init-functions ] +then + . /lib/lsb/init-functions +fi + +if [ -f %%%FREESIDE_DEFAULTS%%% ] +then + . %%%FREESIDE_DEFAULTS%%% +fi + +PATH="%%%FREESIDE_BIN%%%:$PATH" + +statusfunc() { + RUNNING=0 + if [ -f ${LOCKFILE} ] + then + if [ -f ${PIDFILE} ] + then + PIDFILE=`eval ls $PIDFILE 2> /dev/null` + PID=`cat $PIDFILE` + if ps -p ${PID} > /dev/null + then + return 0 + else + return 1 + fi + fi + fi + return 3 +} + +startfunc() { + if statusfunc + then + action "Already running ${SERVICE} " /bin/false + else + eval "${STARTCOMMAND[@]}" + RETVAL=$? + action "Starting ${SERVICE} " /bin/true + if [ $RETVAL = 0 ] + then + touch ${LOCKFILE} + fi + return $RETVAL + fi +} + +stopfunc() { + if statusfunc + then + echo -n "Stopping ${SERVICE} service" + PIDFILE=`eval ls $PIDFILE 2> /dev/null` + killproc -p ${PIDFILE} + rm -f ${LOCKFILE} + echo + else + action "Service not running" /bin/false + fi +} + +restartfunc() { + stopfunc + startfunc +} + +echo_statusfunc() { + echo -n $SERVICE + EVAL_PIDFILE=`eval ls $PIDFILE > /dev/null` + if [ -n "$EVAL_PIDFILE" ] + then + PIDFILE=$EVAL_PIDFILE + fi + status -p $PIDFILE +} + + diff --git a/init.d/freeside-init b/init.d/freeside-init deleted file mode 100644 index 92e3fdfe06..0000000000 --- a/init.d/freeside-init +++ /dev/null @@ -1,195 +0,0 @@ -#!/bin/sh -# -# chkconfig: 345 86 16 -# description: Freeside daemons -# -### BEGIN INIT INFO -# Provides: freeside -# Required-Start: $time $remote_fs -# Required-Stop: $remote_fs -# Should-Start: postgresql mysql -# Should-Stop: postgresql mysql -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: Start Freeside daemons at boot time -# Description: Enable Freeside daemons -### END INIT INFO - -QUEUED_USER=%%%QUEUED_USER%%% -API_USER=%%%API_USER%%% - -SELFSERVICE_USER=%%%SELFSERVICE_USER%%% -SELFSERVICE_MACHINES="%%%SELFSERVICE_MACHINES%%%" - -IF=eth0 - -#INSTALLSCRIPT/INSTALLSITEBIN from Makefile.PL -PATH="$PATH:/usr/local/bin" -export PATH - -[ -r /etc/default/freeside ] && . /etc/default/freeside - -case "$1" in - start) - # Start daemons. - - for MACHINE in $SELFSERVICE_MACHINES; do - echo -n "Starting freeside-selfservice-server to $MACHINE: " - freeside-selfservice-server $SELFSERVICE_USER $MACHINE - echo "done." - done - - echo -n "Starting freeside-selfservice-xmlrpcd: " - freeside-selfservice-xmlrpcd $SELFSERVICE_USER - echo "done." - - echo -n "Starting freeside-xmlrpcd: " - freeside-xmlrpcd $API_USER - echo "done." - -# echo -n "Starting freeside-jsonrpcd: " -# freeside-jsonrpcd $API_USER -# echo "done." - - echo -n "Starting freeside-queued: " - #perl -MDBIx::Profile /usr/local/bin/freeside-queued $QUEUED_USER - freeside-queued $QUEUED_USER - #export NYTPROF="file=/usr/local/etc/freeside/nytprof.out" - #PERL5OPT="-d:NYTProf" freeside-queued $QUEUED_USER - echo "done." - - echo -n "Starting freeside-sqlradius-radacctd: " - freeside-sqlradius-radacctd $QUEUED_USER - echo "done." - - echo -n "Starting freeside-prepaidd: " - freeside-prepaidd $QUEUED_USER - echo "done." - - echo -n "Starting freeside-cdrrewrited: " - freeside-cdrrewrited $QUEUED_USER - echo "done." - - echo -n "Starting freeside-cdrd: " - freeside-cdrd $QUEUED_USER - echo "done." - - echo -n "Starting freeside-cdrrated: " - freeside-cdrrated $QUEUED_USER - echo "done." - - if [ -e /usr/local/bin/torrus ]; then - echo -n "Starting torrus collector: " - /usr/local/bin/torrus collector --tree=main - echo "done." - fi - - echo -n "Starting freeside-torrus-srvderive: " - freeside-torrus-srvderive $QUEUED_USER - echo "done." - - #ip=`/sbin/ifconfig $IF | grep 'inet addr:' | cut -d: -f2- | cut -d' ' -f1` - #cp /opt/rt3/etc/RT_SiteConfig.pm.ORIG /opt/rt3/etc/RT_SiteConfig.pm - #perl -pi -e "s/localhost/$ip/" /opt/rt3/etc/RT_SiteConfig.pm - - ;; - stop) - # Stop daemons. - echo -n "Stopping freeside-queued: " - [ -e /var/run/freeside-queued.pid ] && kill `cat /var/run/freeside-queued.pid` - #and - sleep 2; - killall freeside-queued - 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 - - 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-cdrrewrited.pid ]; then - echo -n "Stopping freeside-cdrrewrited: " - kill `cat /var/run/freeside-cdrrewrited.pid` - echo "done." - fi - - if [ -e /var/run/freeside-cdrrated.pid ]; then - echo -n "Stopping freeside-cdrrated: " - kill `cat /var/run/freeside-cdrrated.pid` - echo "done." - fi - - if [ -e /var/run/freeside/torrus-srvderive.pid ]; then - echo -n "Stopping freeside-torrus-srvderive: " - kill `cat /var/run/freeside/torrus-srvderive.pid` - echo "done." - fi - - if [ -e /var/run/torrus/collector.main_?.pid ]; then - echo -n "Stopping torrus collector: " - kill `cat /var/run/torrus/collector.main_?.pid` - echo "done." - fi - - if [ -e /var/run/freeside/xmlrpcd.pid ]; then - echo -n "Stopping freeside-xmlrpcd: " - kill `cat /var/run/freeside/xmlrpcd.pid` - echo "done." - fi - -# if [ -e /var/run/freeside/jsonrpcd.pid ]; then -# echo -n "Stopping freeside-jsonrpcd: " -# kill `cat /var/run/freeside/jsonrpcd.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 - - if [ -z "$SELFSERVICE_MACHINES" ]; then SELFSERVICE_MACHINES='localhost'; fi - for MACHINE in $SELFSERVICE_MACHINES; do - 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 - - if [ -e /var/run/freeside/selfservice-xmlrpcd.pid ]; then - echo -n "Stopping freeside-selfservice-xmlrpcd: " - kill `cat /var/run/freeside/selfservice-xmlrpcd.pid` - echo "done." - fi - - ;; - - restart) - $0 stop - $0 start - ;; - *) - echo "Usage: freeside {start|stop|restart}" - exit 1 -esac - -exit 0 - diff --git a/init.d/freeside-selfservice-server.init b/init.d/freeside-selfservice-server.init new file mode 100644 index 0000000000..af42a7fa55 --- /dev/null +++ b/init.d/freeside-selfservice-server.init @@ -0,0 +1,149 @@ +#!/bin/bash + +# description: Manage the freeside-queued script service, SYS-V style +# chkconfig: 2345 10 90 + + +ARG1=${1} +SERVICE=freeside-selfservice-server + +if [ -f %%%FREESIDE_DEFAULTS%%% ] +then + . %%%FREESIDE_DEFAULTS%%% +else + echo "ERROR: freeside defaults could not be sourced." + exit 1 +fi + +LOCKFILE=$LOCKFILE_DIR/$SERVICE +PIDFILE=$PIDFILE_DIR/${SERVICE}.USERMACHINE.pid + +statusfunc() { + if [ -f ${LOCKFILE} ] + then + MACH_RUNNING=0 + MACH_DEAD=0 + MACH_STOPPED=0 + # Loop over machines + for MACHINE in $SELFSERVICE_MACHINES + do + USERMACHINE="${SELFSERVICE_USER}.${MACHINE}" + MYPIDFILE=`echo $PIDFILE | sed "s/USERMACHINE/$USERMACHINE/"` + + if [ -f ${MYPIDFILE} ] + then + PID=`cat $MYPIDFILE` + if ps -p ${PID} > /dev/null + then + MACH_RUNNING=$((MACH_RUNNING + 1)) + else + MACH_DEAD=$((MACH_DEAD + 1)) + fi + else + MACH_STOPPED=$((MACH_STOPPED + 1)) + fi + done + + if [ $MACH_DEAD -gt 0 ] + then + return 1 + fi + if [ $MACH_RUNNING -ge 0 -a $MACH_STOPPED -eq 0 ] + then + return 0 + fi + + fi + return 3 +} + +startfunc() { + if statusfunc + then + action "Already running ${SERVICE} " /bin/false + else + # Loop over machines + STARTERR=0 + for MACHINE in $SELFSERVICE_MACHINES + do + ${SERVICE} $SELFSERVICE_USER $MACHINE + RETVAL=$? + action "Starting ${SERVICE} " /bin/true + if [ $RETVAL != 0 ] + then + STARTERR=1 + fi + done + if [ $STARTERR -eq 0 ] + then + touch ${LOCKFILE} + return 0 + fi + return 1 + fi +} + +stopfunc() { + if statusfunc + then + for MACHINE in $SELFSERVICE_MACHINES + do + USERMACHINE="${SELFSERVICE_USER}.${MACHINE}" + MYPIDFILE=`echo $PIDFILE | sed "s/USERMACHINE/$USERMACHINE/"` + echo -n "Stopping ${SERVICE} service for $MACHINE" + killproc -p ${MYPIDFILE} + echo + done + rm -f ${LOCKFILE} + else + action "Service not running" /bin/false + fi +} + +restartfunc() { + stopfunc + startfunc +} + +# echo_status function +echo_statusfunc() { + # we need a way of displaying the status to the end user if called with the parameter status. This status function will check for pid or lockfile + echo -n $SERVICE + for MACHINE in $SELFSERVICE_MACHINES + do + USERMACHINE="${SELFSERVICE_USER}.${MACHINE}" + MYPIDFILE=`echo $PIDFILE | sed "s/USERMACHINE/$USERMACHINE/"` + status -p $MYPIDFILE + done +} + +case $ARG1 in + +start) + # if our parameter is 'start' we should run this + startfunc +;; + +stop) + # if our parameter is 'stop' we should run this + stopfunc +;; + +restart) + # if our parameter is 'restart' we should run this + restartfunc +;; + +status) + # display the status of our service using the echo_statusfunc function + echo_statusfunc +;; + +*) + # catchall case statement... if we get a parameter that we don't understand show the syntax and exit with and error code of >0 + echo "Syntax Error... usage: $0 (start|stop|restart|status)" + exit 1 +;; + +# close up that case +esac diff --git a/init.d/freeside-service.init.in b/init.d/freeside-service.init.in new file mode 100644 index 0000000000..c9d10544ae --- /dev/null +++ b/init.d/freeside-service.init.in @@ -0,0 +1,51 @@ +#!/bin/bash + +# description: Manage the %%%SERVICE%%% script service, SYS-V style +# chkconfig: 2345 10 90 + + +ARG1=${1} +SERVICE=%%%SERVICE%%% + +if [ -f /etc/init.d/freeside-functions ] +then + . /etc/init.d/freeside-functions +else + echo "ERROR: freeside-functions could not be sourced." + exit 1 +fi + +STARTCOMMAND=(%%%STARTCOMMAND%%%) +LOCKFILE=${LOCKFILE_DIR}/${SERVICE} +PIDFILE=%%%PIDFILE%%% + +case $ARG1 in + +start) + # if our parameter is 'start' we should run this + startfunc +;; + +stop) + # if our parameter is 'stop' we should run this + stopfunc +;; + +restart) + # if our parameter is 'restart' we should run this + restartfunc +;; + +status) + # display the status of our service using the echo_statusfunc function + echo_statusfunc +;; + +*) + # catchall case statement... if we get a parameter that we don't understand show the syntax and exit with and error code of >0 + echo "Syntax Error... usage: $0 (start|stop|restart|status)" + exit 1 +;; + +# close up that case +esac