[Freeswitch-svn] [commit] r6430 - in freeswitch/trunk: libs/js src src/include src/mod/applications/mod_commands src/mod/applications/mod_dptools src/mod/applications/mod_voicemail src/mod/endpoints/mod_sofia src/mod/languages/mod_spidermonkey src/mod/xml_int/mod_xml_rpc

Freeswitch SVN anthm at freeswitch.org
Wed Nov 28 21:48:45 EST 2007


Author: anthm
Date: Wed Nov 28 21:48:44 2007
New Revision: 6430

Modified:
   freeswitch/trunk/libs/js/.update
   freeswitch/trunk/libs/js/configure.ac
   freeswitch/trunk/src/include/switch_xml.h
   freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c
   freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
   freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c
   freeswitch/trunk/src/mod/languages/mod_spidermonkey/sm.mak
   freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
   freeswitch/trunk/src/switch_xml.cpp

Log:
add some stuff

Modified: freeswitch/trunk/libs/js/.update
==============================================================================
--- freeswitch/trunk/libs/js/.update	(original)
+++ freeswitch/trunk/libs/js/.update	Wed Nov 28 21:48:44 2007
@@ -1 +1 @@
-Mon Apr 23 14:11:42 EDT 2007
+Wed Nov 28 21:37:06 EST 2007

Modified: freeswitch/trunk/libs/js/configure.ac
==============================================================================
--- freeswitch/trunk/libs/js/configure.ac	(original)
+++ freeswitch/trunk/libs/js/configure.ac	Wed Nov 28 21:48:44 2007
@@ -141,6 +141,15 @@
     CPPFLAGS="$CPPFLAGS -DJS_HAS_FILE_OBJECT=1"
 fi
 
+dnl #   configure option --without-xml
+AC_ARG_WITH([xml],
+	AS_HELP_STRING([--without-xml], [build without XML object]),
+	[ac_cv_with_xml=$withval], [ac_cv_with_xml=yes])
+AC_CACHE_CHECK([whether to build with the XML object], [ac_cv_with_xml], [ac_cv_with_xml=yes])
+if test ".$ac_cv_with_xml" = ".yes"; then
+    CPPFLAGS="$CPPFLAGS -DJS_HAS_XML_SUPPORT=1"
+fi
+
 dnl #   configure option --with-dso
 AC_ARG_WITH([dso],
 	AS_HELP_STRING([--with-dso], [build without DSO object (allows run-time process extending)]),

Modified: freeswitch/trunk/src/include/switch_xml.h
==============================================================================
--- freeswitch/trunk/src/include/switch_xml.h	(original)
+++ freeswitch/trunk/src/include/switch_xml.h	Wed Nov 28 21:48:44 2007
@@ -319,7 +319,9 @@
 												  const char *params);
 
 SWITCH_DECLARE(switch_status_t) switch_xml_locate_domain(const char *domain_name, char *params, switch_xml_t *root, switch_xml_t *domain);
-SWITCH_DECLARE(switch_status_t) switch_xml_locate_user(const char *user_name, const char *domain_name, 
+SWITCH_DECLARE(switch_status_t) switch_xml_locate_user(const char *key,
+													   const char *user_name, 
+													   const char *domain_name, 
 													   const char *ip, 
 													   switch_xml_t *root,
 													   switch_xml_t *domain,

Modified: freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c	Wed Nov 28 21:48:44 2007
@@ -41,6 +41,66 @@
 SWITCH_MODULE_DEFINITION(mod_commands, mod_commands_load, NULL, NULL);
 
 
+SWITCH_STANDARD_API(find_user_function)
+{
+	switch_xml_t x_domain, x_user, xml = NULL;
+	int argc;
+    char *mydata = NULL, *argv[3];
+	char *key, *user, *domain;
+	char *xmlstr, *xs;
+
+    if (!cmd) {
+		stream->write_function(stream,  "bad args\n");
+        goto end;
+    }
+
+    mydata = strdup(cmd);
+    assert(mydata);
+	
+    argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+
+    if (argc < 3) {
+		stream->write_function(stream,  "bad args\n");
+        goto end;
+    }
+
+	key = argv[0];
+	user = argv[1];
+	domain = argv[2];
+
+    if (!(key && user && domain)) {
+		stream->write_function(stream,  "bad args\n");
+        goto end;
+    }
+
+	if (switch_xml_locate_user(key, user, domain, NULL, &xml, &x_domain, &x_user, NULL) != SWITCH_STATUS_SUCCESS) {
+		stream->write_function(stream,  "can't find user [%s@%s]\n", user, domain);
+		goto end;
+	}
+
+
+ end:
+
+	if (xml) {
+		xmlstr = switch_xml_toxml(x_user);
+		assert(xmlstr);
+		if ((xs = strstr(xmlstr, "?>"))) {
+			xs += 2;
+		} else {
+			xs = xmlstr;
+		}
+		stream->write_function(stream,  "%s", xs);
+		free(xmlstr);
+		switch_xml_free(xml);
+		
+	}
+
+	free(mydata);
+	return SWITCH_STATUS_SUCCESS;
+
+}
+
+
 SWITCH_STANDARD_API(regex_function)
 {
 	switch_regex_t *re = NULL;
@@ -1782,6 +1842,7 @@
 	SWITCH_ADD_API(commands_api_interface, "qq", "Eval a conditional", cond_function, "<expr> ? <true val> : <false val>");
 	SWITCH_ADD_API(commands_api_interface, "regex", "Eval a regex", regex_function, "<data>|<pattern>[|<subst string>]");
 	SWITCH_ADD_API(commands_api_interface, "uuid_chat", "Send a chat message", uuid_chat, UUID_CHAT_SYNTAX);
+	SWITCH_ADD_API(commands_api_interface, "find_user_xml", "find a usere", find_user_function, "<key> <user>@<domain>");
 
 	/* indicate that the module should continue to be loaded */
 	return SWITCH_STATUS_NOUNLOAD;

Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	Wed Nov 28 21:48:44 2007
@@ -109,7 +109,7 @@
 
 	*domain++ = '\0';
 	
-	if (switch_xml_locate_user(user, domain, NULL, &xml, &x_domain, &x_user, NULL) != SWITCH_STATUS_SUCCESS) {
+	if (switch_xml_locate_user("id", user, domain, NULL, &xml, &x_domain, &x_user, NULL) != SWITCH_STATUS_SUCCESS) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "can't find user [%s@%s]\n", user, domain);
 		goto done;
 	}

Modified: freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c
==============================================================================
--- freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c	(original)
+++ freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c	Wed Nov 28 21:48:44 2007
@@ -1570,7 +1570,7 @@
                     
                     assert(xtra);
 
-                    if (switch_xml_locate_user(myid, domain_name, switch_channel_get_variable(channel, "network_addr"), 
+                    if (switch_xml_locate_user("id", myid, domain_name, switch_channel_get_variable(channel, "network_addr"), 
                                                &x_domain_root, &x_domain, &x_user, xtra) != SWITCH_STATUS_SUCCESS) {
                         switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "can't find user [%s@%s]\n", myid, domain_name);
                         ok = 0;
@@ -1753,7 +1753,7 @@
         
         assert(xtra);
         x_user = x_domain = x_domain_root = NULL;
-        if (switch_xml_locate_user(id, domain_name, switch_channel_get_variable(channel, "network_addr"), 
+        if (switch_xml_locate_user("id", id, domain_name, switch_channel_get_variable(channel, "network_addr"), 
                                    &x_domain_root, &x_domain, &x_user, xtra) == SWITCH_STATUS_SUCCESS) {
             if ((x_params = switch_xml_child(x_user, "params"))) {
                 for (x_param = switch_xml_child(x_params, "param"); x_param; x_param = x_param->next) {

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c	Wed Nov 28 21:48:44 2007
@@ -893,7 +893,7 @@
 		domain_name = realm;
 	}
 	
-	if (switch_xml_locate_user(username, domain_name, ip, &xml, &domain, &user, pbuf) != SWITCH_STATUS_SUCCESS) {
+	if (switch_xml_locate_user("id", username, domain_name, ip, &xml, &domain, &user, pbuf) != SWITCH_STATUS_SUCCESS) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "can't find user [%s@%s]\n", username, domain_name);
 		ret = AUTH_FORBIDDEN;
 		goto end;

Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/sm.mak
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/sm.mak	(original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/sm.mak	Wed Nov 28 21:48:44 2007
@@ -2,7 +2,7 @@
 JS_DIR=$(switch_srcdir)/libs/js
 JSLA=$(JS_DIR)/libjs.la
 
-LOCAL_CFLAGS+=-I$(JS_DIR)/src -I$(JS_DIR)/nsprpub/dist/include/nspr  -DXP_UNIX -I../mod_spidermonkey  -DJS_THREADSAFE -DJS_HAS_FILE_OBJECT=1
+LOCAL_CFLAGS+=-I$(JS_DIR)/src -I$(JS_DIR)/nsprpub/dist/include/nspr  -DXP_UNIX -I../mod_spidermonkey  -DJS_THREADSAFE -DJS_HAS_FILE_OBJECT=1 -DJS_HAS_XML_SUPPORT=1
 LOCAL_LDFLAGS+=-L$(JS_DIR)/nsprpub/pr/src -L$(JS_DIR)/nsprpub/dist/lib -lnspr4
 LOCAL_LIBADD+=$(JSLA)
 

Modified: freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c
==============================================================================
--- freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	(original)
+++ freeswitch/trunk/src/mod/xml_int/mod_xml_rpc/mod_xml_rpc.c	Wed Nov 28 21:48:44 2007
@@ -172,7 +172,7 @@
 					*pass++ = '\0';
 				}
 				
-				if (switch_xml_locate_user(user, domain_name, NULL, &x_domain_root, &x_domain, &x_user, "mailbox=check") != SWITCH_STATUS_SUCCESS) {
+				if (switch_xml_locate_user("id", user, domain_name, NULL, &x_domain_root, &x_domain, &x_user, "mailbox=check") != SWITCH_STATUS_SUCCESS) {
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "can't find user [%s@%s]\n", user, domain_name);
 					goto fail;
 				}

Modified: freeswitch/trunk/src/switch_xml.cpp
==============================================================================
--- freeswitch/trunk/src/switch_xml.cpp	(original)
+++ freeswitch/trunk/src/switch_xml.cpp	Wed Nov 28 21:48:44 2007
@@ -1296,7 +1296,8 @@
 }
 
 
-SWITCH_DECLARE(switch_status_t) switch_xml_locate_user(const char *user_name, 
+SWITCH_DECLARE(switch_status_t) switch_xml_locate_user(const char *key,
+													   const char *user_name,
 													   const char *domain_name, 
 													   const char *ip, 
 													   switch_xml_t *root,
@@ -1311,10 +1312,10 @@
 	*domain = NULL;
 	
 	if (!switch_strlen_zero(xtra_params)) {
-		snprintf(params, sizeof(params), "user=%s&domain=%s&ip=%s&%s", 
+		snprintf(params, sizeof(params), "key=%s&user=%s&domain=%s&ip=%s&%s", key,
 				 switch_str_nil(user_name), switch_str_nil(domain_name), switch_str_nil(ip), xtra_params);
 	} else {
-		snprintf(params, sizeof(params), "user=%s&domain=%s&ip=%s", 
+		snprintf(params, sizeof(params), "key=%s&user=%s&domain=%s&ip=%s", key,
 				 switch_str_nil(user_name), switch_str_nil(domain_name), switch_str_nil(ip));
 		xtra_params = "";
 	}
@@ -1336,7 +1337,7 @@
 			}
 		}
 
-		if ((*user = switch_xml_find_child(*domain, "user", "id", user_name))) {
+		if ((*user = switch_xml_find_child(*domain, "user", key, user_name))) {
 			return SWITCH_STATUS_SUCCESS;
 		}
 		



More information about the Freeswitch-svn mailing list