#include #include #include "config.h" #include "mediator.h" char *config_file_path; unsigned int config_interval = MEDIATOR_DEFAULT_INTERVAL; uint8_t config_dumpcdr = MEDIATOR_DEFAULT_DUMPCDR; uint8_t config_daemonize = MEDIATOR_DEFAULT_DAEMONIZE; char *config_pid_path; char *config_med_host; char *config_med_user; char *config_med_pass; char *config_med_db; unsigned int config_med_port = MEDIATOR_DEFAULT_ACCPORT; char *config_redis_host; unsigned int config_redis_port = MEDIATOR_DEFAULT_REDISPORT; unsigned int config_redis_db = MEDIATOR_DEFAULT_REDISDB; char *config_redis_pass = NULL; char *config_cdr_host; char *config_cdr_user; char *config_cdr_pass; char *config_cdr_db; unsigned int config_cdr_port = MEDIATOR_DEFAULT_CDRPORT; char *config_intermediate_cdr_host; unsigned int config_intermediate_cdr_port = MEDIATOR_DEFAULT_CDRPORT; char *config_cdr_error_file; char *config_prov_host; char *config_prov_user; char *config_prov_pass; char *config_prov_db; unsigned int config_prov_port = MEDIATOR_DEFAULT_PROVPORT; char *config_stats_host; char *config_stats_user; char *config_stats_pass; char *config_stats_db; unsigned int config_stats_port = MEDIATOR_DEFAULT_STATSPORT; med_stats_period_t config_stats_period = MEDIATOR_DEFAULT_STATSPERIOD; int config_maintenance = 0; int strict_leg_tokens = 0; int config_max_acc_age = 0; int config_intermediate_interval = 0; med_loglevel_t config_loglevel = MEDIATOR_DEFAULT_LOGLEVEL; enum config_option { OPT_CONFIGFILE = 'c', OPT_DAEMONIZE = 'd', OPT_PIDFILE = 'D', OPT_SYSLOG = 'l', OPT_LOGLEVEL = 'L', OPT_INTERVAL = 'i', OPT_MED_HOST = 'h', OPT_MED_PORT = 'o', OPT_MED_USER = 'u', OPT_MED_PASS = 'p', OPT_MED_DB = 'b', OPT_CDR_HOST = 'H', OPT_CDR_PORT = 'O', OPT_CDR_USER = 'U', OPT_CDR_PASS = 'P', OPT_CDR_DB = 'B', OPT_INTERMEDIATE_CDR_HOST = 'y', OPT_INTERMEDIATE_CDR_PORT = 'Y', OPT_CDR_ERROR_FILE = 'E', OPT_PROV_HOST = 'S', OPT_PROV_PORT = 'T', OPT_PROV_USER = 'R', OPT_PROV_PASS = 'A', OPT_PROV_DB = 'N', OPT_STATS_HOST = 'Z', OPT_STATS_PORT = 'z', OPT_STATS_USER = 'W', OPT_STATS_PASS = 'w', OPT_STATS_DB = 'X', OPT_REDIS_HOST = 'a', OPT_REDIS_PORT = 't', OPT_REDIS_DB = 'r', OPT_REDIS_PASS = 'e', OPT_STATS_PERIOD = 'x', OPT_MAINTENANCE = 'm', OPT_LEG_TOKENS = 's', OPT_MAX_ACC_AGE = 'M', OPT_INTERMEDIATE_INTERVAL = 'I', }; static const char options[] = "?a:c:e:D:i:dlL:h:u:p:b:o:H:U:P:B:O:S:t:T:r:R:A:N:Z:z:W:w:X:x:msM:I:y:Y:"; struct option long_options[] = { { "configfile", required_argument, NULL, OPT_CONFIGFILE }, { "pidfile", required_argument, NULL, OPT_PIDFILE }, { "daemonize", no_argument, NULL, OPT_DAEMONIZE }, { "logquery", no_argument, NULL, OPT_SYSLOG }, { "loglevel", required_argument, NULL, OPT_LOGLEVEL }, { "interval", required_argument, NULL, OPT_INTERVAL }, { "med-host", required_argument, NULL, OPT_MED_HOST }, { "med-port", required_argument, NULL, OPT_MED_PORT }, { "med-user", required_argument, NULL, OPT_MED_USER }, { "med-pass", required_argument, NULL, OPT_MED_PASS }, { "med-db", required_argument, NULL, OPT_MED_DB }, { "cdr-host", required_argument, NULL, OPT_CDR_HOST }, { "cdr-port", required_argument, NULL, OPT_CDR_PORT }, { "cdr-user", required_argument, NULL, OPT_CDR_USER }, { "cdr-pass", required_argument, NULL, OPT_CDR_PASS }, { "cdr-db", required_argument, NULL, OPT_CDR_DB }, { "intermediate-cdr-host", required_argument, NULL, OPT_INTERMEDIATE_CDR_HOST }, { "intermediate-cdr-port", required_argument, NULL, OPT_INTERMEDIATE_CDR_PORT }, { "cdr-error-file", required_argument, NULL, OPT_CDR_ERROR_FILE }, { "prov-host", required_argument, NULL, OPT_PROV_HOST }, { "prov-port", required_argument, NULL, OPT_PROV_PORT }, { "prov-user", required_argument, NULL, OPT_PROV_USER }, { "prov-pass", required_argument, NULL, OPT_PROV_PASS }, { "prov-db", required_argument, NULL, OPT_PROV_DB }, { "stats-host", required_argument, NULL, OPT_STATS_HOST }, { "stats-port", required_argument, NULL, OPT_STATS_PORT }, { "stats-user", required_argument, NULL, OPT_STATS_USER }, { "stats-pass", required_argument, NULL, OPT_STATS_PASS }, { "stats-db", required_argument, NULL, OPT_STATS_DB }, { "redis-host", required_argument, NULL, OPT_REDIS_HOST }, { "redis-port", required_argument, NULL, OPT_REDIS_PORT }, { "redis-db", required_argument, NULL, OPT_REDIS_DB }, { "redis-pass", required_argument, NULL, OPT_REDIS_PASS }, { "stats-period", required_argument, NULL, OPT_STATS_PERIOD }, { "maintenance", no_argument, NULL, OPT_MAINTENANCE }, { "leg-tokens", no_argument, NULL, OPT_LEG_TOKENS }, { "max-acc-age", required_argument, NULL, OPT_MAX_ACC_AGE }, { "intermediate-interval", required_argument, NULL, OPT_INTERMEDIATE_INTERVAL }, { NULL, 0, NULL, 0 }, }; static void config_help(const char *self, int rc) { printf( "mediator %s - Creates call detail records from OpenSER accounting.\n" \ "Usage: %s [