From: <ow...@us...> - 2010-08-22 20:07:29
|
Revision: 4870 http://ipcop.svn.sourceforge.net/ipcop/?rev=4870&view=rev Author: owes Date: 2010-08-22 20:07:23 +0000 (Sun, 22 Aug 2010) Log Message: ----------- Fix start/stop of vnstatd and ulogd Modified Paths: -------------- ipcop/trunk/src/misc-progs/accountingctrl.c Modified: ipcop/trunk/src/misc-progs/accountingctrl.c =================================================================== --- ipcop/trunk/src/misc-progs/accountingctrl.c 2010-08-22 17:03:43 UTC (rev 4869) +++ ipcop/trunk/src/misc-progs/accountingctrl.c 2010-08-22 20:07:23 UTC (rev 4870) @@ -26,6 +26,7 @@ #include <signal.h> #include <stdio.h> #include <string.h> +#include <unistd.h> #include "common.h" #include "setuid.h" @@ -139,9 +140,9 @@ if (flag_empty) { verbose_printf(1, "Stop ulogd ... \n"); - mysignalpidfile("ulogd", SIGTERM); + safe_system("/usr/bin/killall ulogd"); verbose_printf(1, "Stop vnstatd ... \n"); - mysignalpidfile("vnstatd", SIGTERM); + mysignalpidfile("/var/run/vnstat.pid", SIGTERM); verbose_printf(1, "Empty traffic accounting DB ... \n"); safe_system("cp /var/ipcop/traffic/empty-account.db /var/log/ulogd/account.db"); // TODO: recreate vnstat databases @@ -209,25 +210,33 @@ snprintf(command, STRING_SIZE, "/var/log/vnstat/%s", ipcop_ethernet.red_device[1]); if (access(command, 0) == -1) { verbose_printf(1, "Create DB for %s nick %s\n", ipcop_ethernet.red_device[1], "RED_1"); + /* Silence error messages, error messages will appear when a DB is created */ snprintf(command, STRING_SIZE_LARGE, - "/usr/bin/vnstat --update --iface %s --nick %s", ipcop_ethernet.red_device[1], "RED_1"); + "/usr/bin/vnstat --update --iface %s --nick %s 2> /dev/null", ipcop_ethernet.red_device[1], "RED_1"); safe_system(command); } } } - // TODO: start ulogd when ulogd is currently not running - if (flag_init && detail_high) { + if (detail_high && safe_system("/bin/ps -C ulogd > /dev/null")) { verbose_printf(1, "Start ulogd ... \n"); safe_system("/usr/sbin/ulogd -d"); } - if (! detail_high && (access("/var/run/vnstatd.pid", 0) == -1)) { + if (!detail_high && (access("/var/run/vnstat.pid", 0) == -1)) { verbose_printf(1, "Start vnstatd ... \n"); safe_system("/usr/sbin/vnstatd -d"); } } - // TODO: stop any daemon that is not supposed to be running - + /* Stop ulogd if traffic accounting is not enabled and high detail */ + if (!safe_system("/bin/ps -C ulogd > /dev/null") && !(enabled && detail_high)) { + verbose_printf(1, "Stop ulogd ... \n"); + safe_system("/usr/bin/killall ulogd"); + } + /* Stop vnstat if traffic accounting is not enabled and low detail */ + if ((access("/var/run/vnstat.pid", 0) != -1) && !(enabled && !detail_high)) { + verbose_printf(1, "Stop vnstatd ... \n"); + mysignalpidfile("/var/run/vnstat.pid", SIGTERM); + } return 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |