[Freeswitch-svn] [commit] r11357 - freeswitch/branches/1.0/src/mod/applications/mod_easyroute

FreeSWITCH SVN mikej at freeswitch.org
Thu Jan 22 09:28:26 PST 2009


Author: mikej
Date: Thu Jan 22 11:28:25 2009
New Revision: 11357

Log:
mod_easyroute: add custom-query configuration option (r:11054)

Modified:
   freeswitch/branches/1.0/src/mod/applications/mod_easyroute/mod_easyroute.c

Modified: freeswitch/branches/1.0/src/mod/applications/mod_easyroute/mod_easyroute.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/applications/mod_easyroute/mod_easyroute.c	(original)
+++ freeswitch/branches/1.0/src/mod/applications/mod_easyroute/mod_easyroute.c	Thu Jan 22 11:28:25 2009
@@ -68,6 +68,7 @@
 	char *default_techprofile;
 	char *default_gateway;
 	switch_mutex_t *mutex;
+	char *custom_query;
 #ifdef SWITCH_HAVE_ODBC
 	switch_odbc_handle_t *master_odbc;
 #else   
@@ -84,6 +85,7 @@
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_db_dsn, globals.db_dsn);
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_default_techprofile, globals.default_techprofile);
 SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_default_gateway, globals.default_gateway);
+SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_custom_query, globals.custom_query);
 
 static int route_callback(void *pArg, int argc, char **argv, char **columnNames)
 {
@@ -117,28 +119,30 @@
 		for (param = switch_xml_child(settings, "param"); param; param = param->next) {
 			char *var = (char *) switch_xml_attr_soft(param, "name");
 			char *val = (char *) switch_xml_attr_soft(param, "value");
-			if (!strcasecmp(var, "db_username")) {
+			if (!strcasecmp(var, "db-username")) {
 				set_global_db_username(val);
-			} else if (!strcasecmp(var, "db_password")) {
+			} else if (!strcasecmp(var, "db-password")) {
 				set_global_db_password(val);
-			} else if (!strcasecmp(var, "db_dsn")) {
+			} else if (!strcasecmp(var, "db-dsn")) {
 				set_global_db_dsn(val);
 			} else if (!strcasecmp(var, "default-techprofile")) {
 				set_global_default_techprofile(val);
 			} else if (!strcasecmp(var, "default-gateway")) {
 				set_global_default_gateway(val);
+			} else if (!strcasecmp(var, "custom-query")) {
+				set_global_custom_query(val);
 			}
 		}
 	}
 	
 done:
-	if (!globals.db_username) {
+	if (switch_strlen_zero(globals.db_username)) {
 		set_global_db_username("root");
 	}
-	if (!globals.db_password) {
+	if (switch_strlen_zero(globals.db_password)) {
 		set_global_db_password("password");
 	}
-	if (!globals.db_dsn) {
+	if (switch_strlen_zero(globals.db_dsn)) {
 		set_global_db_dsn("easyroute");
 	}
 
@@ -196,8 +200,13 @@
 	route_callback_t pdata;
 
 	memset(&pdata, 0, sizeof(pdata));
-
-	snprintf(sql, 1025, SQL_LOOKUP, dn);
+	if (!globals.custom_query){
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "Doing static Query\n[%s]\n", SQL_LOOKUP);
+		snprintf(sql, 1024, SQL_LOOKUP, dn);
+	} else {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "Doing custom Query\n[%s]\n", globals.custom_query);
+		snprintf(sql, 1024, globals.custom_query, dn);
+	}
 
 	if (globals.mutex){
 		switch_mutex_lock(globals.mutex);
@@ -207,7 +216,7 @@
 	if (switch_odbc_handle_callback_exec(globals.master_odbc, sql, route_callback, &pdata) == SWITCH_ODBC_SUCCESS){
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "SQL Query\n[%s]\n", sql);
 		char tmp_profile[129];
-		char tmp_gateway[16];
+		char tmp_gateway[129];
 
 		if (switch_strlen_zero(pdata.limit)) {
 			switch_set_string(results->limit, "9999" );
@@ -234,7 +243,7 @@
 		}
 
 		switch_snprintf(results->dialstring, 256, "%s/%s@%s", tmp_profile , results->translated, tmp_gateway);
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "THE ROUTE [%s]", results->dialstring);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,  "THE ROUTE [%s]\n", results->dialstring);
 
 		if (switch_strlen_zero(pdata.group)){
 			switch_set_string(results->group, "");



More information about the Freeswitch-svn mailing list