From: <ow...@us...> - 2009-08-21 09:07:22
|
Revision: 3468 http://ipcop.svn.sourceforge.net/ipcop/?rev=3468&view=rev Author: owes Date: 2009-08-21 09:07:15 +0000 (Fri, 21 Aug 2009) Log Message: ----------- Add clean option to accountingctrl Modified Paths: -------------- ipcop/trunk/src/misc-progs/accountingctrl.c Modified: ipcop/trunk/src/misc-progs/accountingctrl.c =================================================================== --- ipcop/trunk/src/misc-progs/accountingctrl.c 2009-08-21 07:50:51 UTC (rev 3467) +++ ipcop/trunk/src/misc-progs/accountingctrl.c 2009-08-21 09:07:15 UTC (rev 3468) @@ -23,15 +23,20 @@ #include <getopt.h> +#include <signal.h> #include <string.h> #include "common.h" #include "setuid.h" +static int flag_empty = 0; + + void usage(char *prg, int exit_code) { printf("Usage: %s [OPTION]\n\n", prg); printf("Options:\n"); + printf(" --empty Empty the traffic accounting DB\n"); printf(" -v, --verbose be verbose\n"); printf(" --help display this help and exit\n"); exit(exit_code); @@ -50,8 +55,9 @@ static struct option long_options[] = { - {"verbose", no_argument, 0, 'v'}, - {"help", no_argument, 0, 'h'}, + { "empty", no_argument, &flag_empty, 1 }, + { "verbose", no_argument, 0, 'v'}, + { "help", no_argument, 0, 'h'}, {0, 0, 0, 0} }; int c; @@ -60,8 +66,10 @@ if (!(initsetuid())) exit(1); - while ((c = getopt_long(argc, argv, "sv", long_options, &option_index)) != -1) { + while ((c = getopt_long(argc, argv, "chv", long_options, &option_index)) != -1) { switch (c) { + case 0: + break; case 'v': /* verbose */ flag_verbose++; break; @@ -73,6 +81,16 @@ } } + if (flag_empty) { + verbose_printf(1, "Stop ulogd ... \n"); + mysignalpidfile("ulogd", SIGTERM); + verbose_printf(1, "Empty traffic accounting DB ... \n"); + safe_system("cp /var/ipcop/traffic/empty-account.db /var/log/ulogd/account.db"); + verbose_printf(1, "Start ulogd ... \n"); + safe_system("/usr/sbin/ulogd -d"); + return 0; + } + verbose_printf(1, "Reading traffic accounting settings ... \n"); if (read_kv_from_file(&kv, "/var/ipcop/traffic/settings") != SUCCESS) { fprintf(stderr, "Cannot read traffic accounting settings\n"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |