[commit] r10087 - in freeswitch/trunk/src: . include mod/applications/mod_commands mod/applications/mod_voicemail
Author: anthm Date: Mon Oct 20 19:27:29 2008 New Revision: 10087 Modified: freeswitch/trunk/src/include/switch_apr.h freeswitch/trunk/src/mod/applications/mod_commands/mod_commands.c freeswitch/trunk/src/mod/applications/mod_voicemail/mod_voicemail.c freeswitch/trunk/src/switch_apr.c Log: all vm to auth from the same a1-hash param used by sip (part deux) Modified: freeswitch/trunk/src/include/switch_apr.h ============================================================================== --- freeswitch/trunk/src/include/switch_apr.h (original) +++ freeswitch/trunk/src/include/switch_apr.h Mon Oct 20 19:27:29 2008 @@ -510,6 +510,7 @@ #define SWITCH_UUID_FORMATTED_LENGTH 36 #define SWITCH_MD5_DIGESTSIZE 16 +#define SWITCH_MD5_DIGEST_STRING_SIZE 33 /** * Format a UUID into a string, following the standard format @@ -540,6 +541,7 @@ * @param inputLen The length of the message block */ SWITCH_DECLARE(switch_status_t) switch_md5(unsigned char digest[SWITCH_MD5_DIGESTSIZE], const void *input, switch_size_t inputLen); +SWITCH_DECLARE(switch_status_t) switch_md5_string(char digest_str[SWITCH_MD5_DIGEST_STRING_SIZE], const void *input, switch_size_t inputLen); /** @} */ 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 Mon Oct 20 19:27:29 2008 @@ -192,6 +192,22 @@ return SWITCH_STATUS_SUCCESS; } + + +SWITCH_STANDARD_API(md5_function) +{ + char digest[SWITCH_MD5_DIGEST_STRING_SIZE] = { 0 }; + + if (switch_strlen_zero(cmd)) { + stream->write_function(stream, "%s", "!err!"); + } else { + switch_md5_string(digest, (void *) cmd, strlen(cmd)); + stream->write_function(stream, "%s", digest); + } + + return SWITCH_STATUS_SUCCESS; +} + SWITCH_STANDARD_API(url_decode_function) { char *reply = ""; @@ -2725,6 +2741,7 @@ switch_api_interface_t *commands_api_interface; *module_interface = switch_loadable_module_create_module_interface(pool, modname); + SWITCH_ADD_API(commands_api_interface, "md5", "md5", md5_function, "<data>"); SWITCH_ADD_API(commands_api_interface, "hupall", "hupall", hupall_api_function, "<cause> [<var> <value>]"); SWITCH_ADD_API(commands_api_interface, "strftime_tz", "strftime_tz", strftime_tz_api_function, "<Timezone_name> [format string]"); SWITCH_ADD_API(commands_api_interface, "originate", "Originate a Call", originate_function, ORIGINATE_SYNTAX); 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 Mon Oct 20 19:27:29 2008 @@ -2003,9 +2003,9 @@ if (!auth && (thepass || thehash) && mypass) { if (thehash) { - unsigned char digest[SWITCH_MD5_DIGESTSIZE] = { 0 }; + char digest[SWITCH_MD5_DIGEST_STRING_SIZE] = { 0 }; char *lpbuf = switch_mprintf("%s:%s:%s", myid, domain_name, mypass); - switch_md5(digest, (void *) lpbuf, strlen(lpbuf)); + switch_md5_string(digest, (void *) lpbuf, strlen(lpbuf)); if (!strcmp(digest, thehash)) { auth++; } Modified: freeswitch/trunk/src/switch_apr.c ============================================================================== --- freeswitch/trunk/src/switch_apr.c (original) +++ freeswitch/trunk/src/switch_apr.c Mon Oct 20 19:27:29 2008 @@ -813,6 +813,20 @@ return apr_md5(digest, input, inputLen); } +SWITCH_DECLARE(switch_status_t) switch_md5_string(char digest_str[SWITCH_MD5_DIGEST_STRING_SIZE], const void *input, switch_size_t inputLen) +{ + unsigned char digest[SWITCH_MD5_DIGESTSIZE]; + apr_status_t status = apr_md5(digest, input, inputLen); + int x; + + digest_str[SWITCH_MD5_DIGEST_STRING_SIZE - 1] = '\0'; + + for( x = 0; x < SWITCH_MD5_DIGESTSIZE; x++) { + switch_snprintf(digest_str + (x * 2), 3, "%02x", digest[x]); + } + + return status; +} /* FIFO queues (apr-util) */
participants (1)
-
Freeswitch SVN