[svn-commits] russell: branch group/newcdr r202222 - in /team/group/newcdr: cel/ configs/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sat Jun 20 15:52:15 CDT 2009


Author: russell
Date: Sat Jun 20 15:52:04 2009
New Revision: 202222

URL: http://svn.asterisk.org/svn-view/asterisk?view=rev&rev=202222
Log:
Fixes/cleanups for cel_manager

 - Remove unused and broken code for handling custom mappings
 - move the one configuration option into cel.conf
 - use standard return values from load_config()

Removed:
    team/group/newcdr/configs/cel_manager.conf.sample
Modified:
    team/group/newcdr/cel/cel_manager.c
    team/group/newcdr/configs/cel.conf.sample

Modified: team/group/newcdr/cel/cel_manager.c
URL: http://svn.asterisk.org/svn-view/asterisk/team/group/newcdr/cel/cel_manager.c?view=diff&rev=202222&r1=202221&r2=202222
==============================================================================
--- team/group/newcdr/cel/cel_manager.c (original)
+++ team/group/newcdr/cel/cel_manager.c Sat Jun 20 15:52:04 2009
@@ -45,91 +45,13 @@
 #include "asterisk/manager.h"
 #include "asterisk/config.h"
 
-#define DATE_FORMAT     "%Y-%m-%d %T"
-#define CONF_FILE	    "cel_manager.conf"
+static const char DATE_FORMAT[] = "%Y-%m-%d %T";
 
-#define CUSTOM_FIELDS_BUF_SIZE 1024
+static const char CONF_FILE[] = "cel.conf";
 
-struct ast_str *customfields;
+static int enablecel;
 
-static int enablecel = 0;
-static struct ast_event_sub *event_sub = NULL;
-static void manager_log(const struct ast_event *event, void *userdata);
-
-static int load_config(int reload)
-{
-	char *cat = NULL;
-	struct ast_config *cfg;
-	struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
-	struct ast_variable *v;
-	int newenablecel = 0;
-
-	cfg = ast_config_load(CONF_FILE, config_flags);
-	if (cfg == CONFIG_STATUS_FILEUNCHANGED) {
-		ast_log(LOG_NOTICE,"CEL manager backend: config file has not changed.\n");
-		return 0;
-	}
-
-	if (reload && customfields) {
-		ast_free(customfields);
-	}
-	customfields = NULL;
-
-	if (!cfg) {
-		ast_log(LOG_WARNING, "Failed to load configuration file. CEL manager Module not activated.\n");
-		/* Standard configuration */
-		enablecel = 0;
-		return 0;
-	}
-
-	if (!ast_variable_browse(cfg, "general")) {
-		/* nothing configured */
-		ast_config_destroy(cfg);
-		ast_log(LOG_NOTICE, "cel_manager has no [general] category, nothing to configure.\n");
-		return 0;
-	}
-
-	while ((cat = ast_category_browse(cfg, cat))) {
-		if (!strcasecmp(cat, "general")) {
-			v = ast_variable_browse(cfg, cat);
-			while (v) {
-				if (!strcasecmp(v->name, "enabled")) {
-					newenablecel = ast_true(v->value);
-				}
-				v = v->next;
-			}
-		} else if (!strcasecmp(cat, "mappings")) {
-			customfields = ast_str_create(CUSTOM_FIELDS_BUF_SIZE);
-			for (v = ast_variable_browse(cfg, cat); v; v = v->next) {
-				if (customfields && !ast_strlen_zero(v->name) && !ast_strlen_zero(v->value)) {
-					if ((ast_str_strlen(customfields) + strlen(v->value) + strlen(v->name) + 14) < ast_str_size(customfields)) {
-						ast_str_append(&customfields, -1, "%s: ${CDR(%s)}\r\n", v->value, v->name);
-						ast_log(LOG_NOTICE, "Added mapping %s: ${CDR(%s)}\n", v->value, v->name);
-					} else {
-						ast_log(LOG_WARNING, "No more buffer space to add other custom fields\n");
-						break;
-					}
-				}
-			}
-		}
-	}
-
-	ast_config_destroy(cfg);
-
-	if (enablecel && !newenablecel) {
-		if (event_sub) {
-			event_sub = ast_event_unsubscribe(event_sub);
-		}
-	} else if (!enablecel && newenablecel) {
-		event_sub = ast_event_subscribe(AST_EVENT_CEL, manager_log, "Manager Event Logging", NULL, AST_EVENT_IE_END);
-		if (!event_sub) {
-			ast_log(LOG_ERROR, "Unable to register Asterisk Call Manager CEL handling\n");
-		}
-	}
-	enablecel = newenablecel;
-
-	return 1;
-}
+static struct ast_event_sub *event_sub;
 
 static void manager_log(const struct ast_event *event, void *userdata)
 {
@@ -177,24 +99,71 @@
 		record.user_field, record.peer);
 }
 
+static int load_config(int reload)
+{
+	char *cat = NULL;
+	struct ast_config *cfg;
+	struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
+	struct ast_variable *v;
+	int newenablecel = 0;
+
+	cfg = ast_config_load(CONF_FILE, config_flags);
+	if (cfg == CONFIG_STATUS_FILEUNCHANGED) {
+		return -1;
+	}
+
+	if (!cfg) {
+		ast_log(LOG_WARNING, "Failed to load configuration file. CEL manager Module not activated.\n");
+		enablecel = 0;
+		return -1;
+	}
+
+	while ((cat = ast_category_browse(cfg, cat))) {
+		if (strcasecmp(cat, "manager")) {
+			continue;
+		}
+
+		for (v = ast_variable_browse(cfg, cat); v; v = v->next) {
+			if (!strcasecmp(v->name, "enabled")) {
+				newenablecel = ast_true(v->value);
+			} else {
+				ast_log(LOG_NOTICE, "Unknown option '%s' specified "
+						"for cel_manager.\n", v->name);
+			}
+		}
+	}
+
+	ast_config_destroy(cfg);
+
+	if (enablecel && !newenablecel) {
+		if (event_sub) {
+			event_sub = ast_event_unsubscribe(event_sub);
+		}
+	} else if (!enablecel && newenablecel) {
+		event_sub = ast_event_subscribe(AST_EVENT_CEL, manager_log, "Manager Event Logging", NULL, AST_EVENT_IE_END);
+		if (!event_sub) {
+			ast_log(LOG_ERROR, "Unable to register Asterisk Call Manager CEL handling\n");
+		}
+	}
+	enablecel = newenablecel;
+
+	return 0;
+}
+
 static int unload_module(void)
 {
 	if (event_sub) {
 		event_sub = ast_event_unsubscribe(event_sub);
 	}
-	if (customfields) {
-		ast_free(customfields);
-	}
-	customfields = NULL;
 	return 0;
 }
 
 static int load_module(void)
 {
-	/* Configuration file */
-	if (!load_config(0)) {
+	if (load_config(0)) {
 		return AST_MODULE_LOAD_DECLINE;
 	}
+
 	return AST_MODULE_LOAD_SUCCESS;
 }
 

Modified: team/group/newcdr/configs/cel.conf.sample
URL: http://svn.asterisk.org/svn-view/asterisk/team/group/newcdr/configs/cel.conf.sample?view=diff&rev=202222&r1=202221&r2=202222
==============================================================================
--- team/group/newcdr/configs/cel.conf.sample (original)
+++ team/group/newcdr/configs/cel.conf.sample Sat Jun 20 15:52:04 2009
@@ -53,5 +53,8 @@
 
 ;dateformat = %ld.%06ld
 
-[csv]
-usegmtime=yes ;log date/time in GMT
+[manager]
+; CEL over AMI - cel_manager.so
+
+; Set to 'yes' to enable.  Disabled by deafult.
+;enabled = yes




More information about the svn-commits mailing list