[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
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; }
participants (1)
-
Freeswitch SVN