forked from seven1240/FreeSWITCH-OLD
-
Notifications
You must be signed in to change notification settings - Fork 27
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #34 from 2600hz/1.4.15-kazoo
add latest mod_kazoo from fs 1.6
- Loading branch information
Showing
8 changed files
with
619 additions
and
163 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,7 @@ | ||
include $(top_srcdir)/build/modmake.rulesam | ||
MODNAME=mod_kazoo | ||
mod_LTLIBRARIES = mod_kazoo.la | ||
mod_kazoo_la_SOURCES = mod_kazoo.c kazoo_utils.c kazoo_node.c kazoo_event_stream.c kazoo_fetch_agent.c | ||
mod_kazoo_la_SOURCES = mod_kazoo.c kazoo_utils.c kazoo_node.c kazoo_event_stream.c kazoo_fetch_agent.c kazoo_commands.c kazoo_dptools.c | ||
mod_kazoo_la_CFLAGS = $(AM_CFLAGS) @ERLANG_CFLAGS@ -D_REENTRANT | ||
mod_kazoo_la_LIBADD = $(switch_builddir)/libfreeswitch.la | ||
mod_kazoo_la_LDFLAGS = -avoid-version -module -no-undefined -shared @ERLANG_LDFLAGS@ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,152 @@ | ||
/* | ||
* FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application | ||
* Copyright (C) 2005-2012, Anthony Minessale II <[email protected]> | ||
* | ||
* Version: MPL 1.1 | ||
* | ||
* The contents of this file are subject to the Mozilla Public License Version | ||
* 1.1 (the "License"); you may not use this file except in compliance with | ||
* the License. You may obtain a copy of the License at | ||
* http://www.mozilla.org/MPL/ | ||
* | ||
* Software distributed under the License is distributed on an "AS IS" basis, | ||
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License | ||
* for the specific language governing rights and limitations under the | ||
* License. | ||
* | ||
* The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application | ||
* | ||
* The Initial Developer of the Original Code is | ||
* Anthony Minessale II <[email protected]> | ||
* Portions created by the Initial Developer are Copyright (C) | ||
* the Initial Developer. All Rights Reserved. | ||
* | ||
* Contributor(s): | ||
* | ||
* Karl Anderson <[email protected]> | ||
* Darren Schreiber <[email protected]> | ||
* | ||
* | ||
* kazoo_commands.c -- clones of mod_commands commands slightly modified for kazoo | ||
* | ||
*/ | ||
#include "mod_kazoo.h" | ||
|
||
#define UUID_SET_DESC "Set a variable" | ||
#define UUID_SET_SYNTAX "<uuid> <var> [value]" | ||
|
||
#define UUID_MULTISET_DESC "Set multiple variables" | ||
#define UUID_MULTISET_SYNTAX "<uuid> <var>=<value>;<var>=<value>..." | ||
|
||
SWITCH_STANDARD_API(uuid_setvar_function) { | ||
switch_core_session_t *psession = NULL; | ||
char *mycmd = NULL, *argv[3] = { 0 }; | ||
int argc = 0; | ||
|
||
if (!zstr(cmd) && (mycmd = strdup(cmd))) { | ||
argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); | ||
if ((argc == 2 || argc == 3) && !zstr(argv[0])) { | ||
char *uuid = argv[0]; | ||
char *var_name = argv[1]; | ||
char *var_value = NULL; | ||
|
||
if (argc == 3) { | ||
var_value = argv[2]; | ||
} | ||
|
||
if ((psession = switch_core_session_locate(uuid))) { | ||
switch_channel_t *channel; | ||
switch_event_t *event; | ||
channel = switch_core_session_get_channel(psession); | ||
|
||
if (zstr(var_name)) { | ||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No variable name specified.\n"); | ||
stream->write_function(stream, "-ERR No variable specified\n"); | ||
} else { | ||
switch_channel_set_variable(channel, var_name, var_value); | ||
stream->write_function(stream, "+OK\n"); | ||
} | ||
|
||
if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_DATA) == SWITCH_STATUS_SUCCESS) { | ||
switch_channel_event_set_data(channel, event); | ||
switch_event_fire(&event); | ||
} | ||
|
||
switch_core_session_rwunlock(psession); | ||
|
||
} else { | ||
stream->write_function(stream, "-ERR No such channel!\n"); | ||
} | ||
goto done; | ||
} | ||
} | ||
|
||
stream->write_function(stream, "-USAGE: %s\n", UUID_SET_SYNTAX); | ||
|
||
done: | ||
switch_safe_free(mycmd); | ||
return SWITCH_STATUS_SUCCESS; | ||
} | ||
|
||
SWITCH_STANDARD_API(uuid_setvar_multi_function) { | ||
switch_core_session_t *psession = NULL; | ||
char *mycmd = NULL, *vars, *argv[64] = { 0 }; | ||
int argc = 0; | ||
char *var_name, *var_value = NULL; | ||
|
||
if (!zstr(cmd) && (mycmd = strdup(cmd))) { | ||
char *uuid = mycmd; | ||
if (!(vars = strchr(uuid, ' '))) { | ||
goto done; | ||
} | ||
*vars++ = '\0'; | ||
|
||
if ((psession = switch_core_session_locate(uuid))) { | ||
switch_channel_t *channel = switch_core_session_get_channel(psession); | ||
switch_event_t *event; | ||
int x, y = 0; | ||
argc = switch_separate_string(vars, ';', argv, (sizeof(argv) / sizeof(argv[0]))); | ||
|
||
for (x = 0; x < argc; x++) { | ||
var_name = argv[x]; | ||
if (var_name && (var_value = strchr(var_name, '='))) { | ||
*var_value++ = '\0'; | ||
} | ||
if (zstr(var_name)) { | ||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No variable name specified.\n"); | ||
stream->write_function(stream, "-ERR No variable specified\n"); | ||
} else { | ||
switch_channel_set_variable(channel, var_name, var_value); | ||
y++; | ||
} | ||
} | ||
|
||
/* keep kazoo nodes in sync */ | ||
if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_DATA) == SWITCH_STATUS_SUCCESS) { | ||
switch_channel_event_set_data(channel, event); | ||
switch_event_fire(&event); | ||
} | ||
|
||
switch_core_session_rwunlock(psession); | ||
if (y) { | ||
stream->write_function(stream, "+OK\n"); | ||
goto done; | ||
} | ||
} else { | ||
stream->write_function(stream, "-ERR No such channel!\n"); | ||
} | ||
} | ||
|
||
stream->write_function(stream, "-USAGE: %s\n", UUID_MULTISET_SYNTAX); | ||
|
||
done: | ||
switch_safe_free(mycmd); | ||
return SWITCH_STATUS_SUCCESS; | ||
} | ||
|
||
void add_kz_commands(switch_loadable_module_interface_t **module_interface, switch_api_interface_t *api_interface) { | ||
SWITCH_ADD_API(api_interface, "kz_uuid_setvar_multi", UUID_SET_DESC, uuid_setvar_multi_function, UUID_MULTISET_SYNTAX); | ||
switch_console_set_complete("add kz_uuid_setvar_multi ::console::list_uuid"); | ||
SWITCH_ADD_API(api_interface, "kz_uuid_setvar", UUID_MULTISET_DESC, uuid_setvar_function, UUID_SET_SYNTAX); | ||
switch_console_set_complete("add kz_uuid_setvar ::console::list_uuid"); | ||
} |
Oops, something went wrong.