[commit] r11268 - freeswitch/branches/ctrix/mod_airpe
Author: ctrix Date: Sat Jan 17 18:54:58 2009 New Revision: 11268 Log: api for: - airpe_debug: switch debug on/off for a client - airpe_raw_command: sends a raw command to a client Modified: freeswitch/branches/ctrix/mod_airpe/airpe_api.c Modified: freeswitch/branches/ctrix/mod_airpe/airpe_api.c ============================================================================== --- freeswitch/branches/ctrix/mod_airpe/airpe_api.c (original) +++ freeswitch/branches/ctrix/mod_airpe/airpe_api.c Sat Jan 17 18:54:58 2009 @@ -37,6 +37,42 @@ */ +#define AIRPE_RAW_SYNTAX "airpe_raw_command <clientname> <command string>" +SWITCH_STANDARD_API(airpe_raw_command) +{ + int argc = 0; + char *argv[2] = { 0 }; + char *mycmd = NULL; + char *client = NULL; + char buf[SKYPE_MSG_LEN]; + airpe_interface_t *airpe = NULL; + + if (!switch_strlen_zero(cmd) && (mycmd = strdup(cmd))) { + argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))); + switch_assert(argv[0]); + } + + if ( argc <= 1 ) { + stream->write_function(stream, "-USAGE: %s\n", AIRPE_RAW_SYNTAX); + goto done; + } + + client = argv[0]; + airpe = airpe_find_interface(client); + + if ( !airpe ) { + stream->write_function(stream, "-ERR interface not found for client "); + stream->write_function(stream, client); + goto done; + } + + snprintf(buf, SKYPE_MSG_LEN, "%s", argv[1] ); + airpe_cmd_write(airpe, buf); + + done: + return SWITCH_STATUS_SUCCESS; +} + #define AIRPE_DEBUG_SYNTAX "airpe_debug <clientname> <on|off|true|false|1|0>" SWITCH_STANDARD_API(airpe_debug_command) { @@ -201,6 +237,27 @@ switch_snprintf(buf, sizeof(buf), "%-20s: %s\n", "Auto-auth", (airpe->auto_auth) ? "Yes" : "No" ); stream->write_function(stream, buf); + if ( airpe->variables_hash ) { + switch_hash_index_t *hi; + const void *var = NULL; + void *val = NULL; + const char *vname, *vvalue; + + for (hi = switch_hash_first(NULL, airpe->variables_hash); hi; hi = switch_hash_next(hi)) { + if ( !var ) { + stream->write_function(stream, "Client variables\n"); + } + switch_hash_this(hi, &var, NULL, &val); + vname = var; + vvalue = (const char*) val; + if ( vname && vvalue ) { + switch_snprintf(buf, sizeof(buf), "- %-20s: %s\n", vname, vvalue ); + stream->write_function(stream, buf); + } + } + + } + done: return SWITCH_STATUS_SUCCESS; } @@ -305,6 +362,9 @@ switch_console_set_complete("add airpe_status "); SWITCH_ADD_API(api, "airpe_status", "gets/sets the status of an airpe client", airpe_status_command, AIRPE_STATUS_SYNTAX); + switch_console_set_complete("add airpe_raw_command "); + SWITCH_ADD_API(api, "airpe_raw_command", "sends a raw command to an airpe client", airpe_raw_command, AIRPE_RAW_SYNTAX); + return SWITCH_STATUS_SUCCESS; }
participants (1)
-
FreeSWITCH SVN