Author: dlee Date: Mon Jul 29 16:14:12 2013 New Revision: 395711 URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=395711 Log: Multiple revisions 395707-395710
........ r395707 | dlee | 2013-07-29 15:20:43 -0500 (Mon, 29 Jul 2013) | 15 lines Rename everything Stasis-HTTP to ARI This renames all files and API calls from several variants of Stasis-HTTP to ARI including: * Stasis-HTTP -> ARI * STASIS_HTTP -> ARI * stasis_http -> ari (ast_ari for global symbols, file names as well) * stasis http -> ARI Review: https://reviewboard.asterisk.org/r/2706/ (closes issue ASTERISK-22136) ........ Merged revisions 395603 from http://svn.asterisk.org/svn/asterisk/trunk ........ r395708 | dlee | 2013-07-29 15:39:11 -0500 (Mon, 29 Jul 2013) | 1 line Fixed merge conflict ........ r395709 | dlee | 2013-07-29 15:52:43 -0500 (Mon, 29 Jul 2013) | 1 line Merge fixes to new content ........ r395710 | dlee | 2013-07-29 15:54:41 -0500 (Mon, 29 Jul 2013) | 2 lines Merged revisions 395619-395686 from http://svn.asterisk.org/svn/asterisk/trunk ........ Merged revisions 395707-395710 from http://svn.asterisk.org/svn/asterisk/team/dlee/allow-multiple Added: team/dlee/asterisk-info/include/asterisk/ari.h - copied unchanged from r395710, team/dlee/allow-multiple/include/asterisk/ari.h team/dlee/asterisk-info/res/ari/ (props changed) - copied from r395710, team/dlee/allow-multiple/res/ari/ team/dlee/asterisk-info/res/ari.make - copied unchanged from r395710, team/dlee/allow-multiple/res/ari.make team/dlee/asterisk-info/res/res_ari.c - copied unchanged from r395710, team/dlee/allow-multiple/res/res_ari.c team/dlee/asterisk-info/res/res_ari.exports.in - copied unchanged from r395710, team/dlee/allow-multiple/res/res_ari.exports.in team/dlee/asterisk-info/res/res_ari_asterisk.c - copied unchanged from r395710, team/dlee/allow-multiple/res/res_ari_asterisk.c team/dlee/asterisk-info/res/res_ari_bridges.c - copied unchanged from r395710, team/dlee/allow-multiple/res/res_ari_bridges.c team/dlee/asterisk-info/res/res_ari_channels.c - copied unchanged from r395710, team/dlee/allow-multiple/res/res_ari_channels.c team/dlee/asterisk-info/res/res_ari_endpoints.c - copied unchanged from r395710, team/dlee/allow-multiple/res/res_ari_endpoints.c team/dlee/asterisk-info/res/res_ari_events.c - copied unchanged from r395710, team/dlee/allow-multiple/res/res_ari_events.c team/dlee/asterisk-info/res/res_ari_playback.c - copied unchanged from r395710, team/dlee/allow-multiple/res/res_ari_playback.c team/dlee/asterisk-info/res/res_ari_recordings.c - copied unchanged from r395710, team/dlee/allow-multiple/res/res_ari_recordings.c team/dlee/asterisk-info/res/res_ari_sounds.c - copied unchanged from r395710, team/dlee/allow-multiple/res/res_ari_sounds.c team/dlee/asterisk-info/rest-api-templates/ari.make.mustache - copied unchanged from r395710, team/dlee/allow-multiple/rest-api-templates/ari.make.mustache team/dlee/asterisk-info/rest-api-templates/ari_resource.c.mustache - copied unchanged from r395710, team/dlee/allow-multiple/rest-api-templates/ari_resource.c.mustache team/dlee/asterisk-info/rest-api-templates/ari_resource.h.mustache - copied unchanged from r395710, team/dlee/allow-multiple/rest-api-templates/ari_resource.h.mustache team/dlee/asterisk-info/rest-api-templates/res_ari_resource.c.mustache - copied unchanged from r395710, team/dlee/allow-multiple/rest-api-templates/res_ari_resource.c.mustache team/dlee/asterisk-info/tests/test_ari.c - copied unchanged from r395710, team/dlee/allow-multiple/tests/test_ari.c Removed: team/dlee/asterisk-info/include/asterisk/stasis_http.h team/dlee/asterisk-info/res/res_stasis_http.c team/dlee/asterisk-info/res/res_stasis_http.exports.in team/dlee/asterisk-info/res/res_stasis_http_asterisk.c team/dlee/asterisk-info/res/res_stasis_http_bridges.c team/dlee/asterisk-info/res/res_stasis_http_channels.c team/dlee/asterisk-info/res/res_stasis_http_endpoints.c team/dlee/asterisk-info/res/res_stasis_http_events.c team/dlee/asterisk-info/res/res_stasis_http_playback.c team/dlee/asterisk-info/res/res_stasis_http_recordings.c team/dlee/asterisk-info/res/res_stasis_http_sounds.c team/dlee/asterisk-info/res/stasis_http/ team/dlee/asterisk-info/res/stasis_http.make team/dlee/asterisk-info/rest-api-templates/res_stasis_http_resource.c.mustache team/dlee/asterisk-info/rest-api-templates/stasis_http.make.mustache team/dlee/asterisk-info/rest-api-templates/stasis_http_resource.c.mustache team/dlee/asterisk-info/rest-api-templates/stasis_http_resource.h.mustache team/dlee/asterisk-info/tests/test_stasis_http.c Modified: team/dlee/asterisk-info/ (props changed) team/dlee/asterisk-info/configs/ari.conf.sample team/dlee/asterisk-info/include/asterisk/mixmonitor.h (props changed) team/dlee/asterisk-info/main/loader.c team/dlee/asterisk-info/main/mixmonitor.c (contents, props changed) team/dlee/asterisk-info/main/stasis_config.c team/dlee/asterisk-info/res/Makefile team/dlee/asterisk-info/res/ari/ari_model_validators.c team/dlee/asterisk-info/res/ari/ari_model_validators.h team/dlee/asterisk-info/res/ari/resource_asterisk.c team/dlee/asterisk-info/res/parking/parking_devicestate.c (props changed) team/dlee/asterisk-info/res/res_ari_model.c team/dlee/asterisk-info/res/res_ari_model.exports.in team/dlee/asterisk-info/res/res_sip.c team/dlee/asterisk-info/res/res_statsd.c team/dlee/asterisk-info/rest-api-templates/ari_model_validators.c.mustache team/dlee/asterisk-info/rest-api-templates/ari_model_validators.h.mustache team/dlee/asterisk-info/rest-api-templates/make_ari_stubs.py team/dlee/asterisk-info/rest-api-templates/param_parsing.mustache team/dlee/asterisk-info/rest-api-templates/rest_handler.mustache team/dlee/asterisk-info/tests/test_ari_model.c team/dlee/asterisk-info/tests/test_cel.c Propchange: team/dlee/asterisk-info/ ------------------------------------------------------------------------------ --- svnmerge-integrated (original) +++ svnmerge-integrated Mon Jul 29 16:14:12 2013 @@ -1,1 +1,1 @@ -/team/dlee/allow-multiple:1-395651 +/team/dlee/allow-multiple:1-395710 Modified: team/dlee/asterisk-info/configs/ari.conf.sample URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/configs/ari.conf.sample?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/configs/ari.conf.sample (original) +++ team/dlee/asterisk-info/configs/ari.conf.sample Mon Jul 29 16:14:12 2013 @@ -1,6 +1,6 @@ [general] -enabled = yes ; When set to no, stasis-http support is disabled. -;pretty = no ; When set to yes, responses from stasis-http are +enabled = yes ; When set to no, ARI support is disabled. +;pretty = no ; When set to yes, responses from ARI are ; ; formatted to be human readable. ;allowed_origins = ; Comma separated list of allowed origins, for ; ; Cross-Origin Resource Sharing. May be set to * to Propchange: team/dlee/asterisk-info/include/asterisk/mixmonitor.h ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Mon Jul 29 16:14:12 2013 @@ -1,1 +1,1 @@ -"Author Date Id Revision" +Author Date Id Revision Modified: team/dlee/asterisk-info/main/loader.c URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/main/loader.c?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/main/loader.c (original) +++ team/dlee/asterisk-info/main/loader.c Mon Jul 29 16:14:12 2013 @@ -50,7 +50,7 @@ #include "asterisk/enum.h" #include "asterisk/http.h" #include "asterisk/lock.h" -#include "asterisk/features.h" +#include "asterisk/features_config.h" #include "asterisk/dsp.h" #include "asterisk/udptl.h" #include "asterisk/heap.h" @@ -313,7 +313,7 @@ { "manager", reload_manager }, { "http", ast_http_reload }, { "logger", logger_reload }, - { "features", ast_features_reload }, + { "features", ast_features_config_reload }, { "dsp", ast_dsp_reload}, { "udptl", ast_udptl_reload }, { "indications", ast_indications_reload }, Modified: team/dlee/asterisk-info/main/mixmonitor.c URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/main/mixmonitor.c?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/main/mixmonitor.c (original) +++ team/dlee/asterisk-info/main/mixmonitor.c Mon Jul 29 16:14:12 2013 @@ -29,7 +29,7 @@ #include "asterisk.h" -ASTERISK_FILE_VERSION(__FILE__, "$Revision: 390830 $") +ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/lock.h" #include "asterisk/logger.h" Propchange: team/dlee/asterisk-info/main/mixmonitor.c ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Mon Jul 29 16:14:12 2013 @@ -1,1 +1,1 @@ -"Author Date Id Revision" +Author Date Id Revision Modified: team/dlee/asterisk-info/main/stasis_config.c URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/main/stasis_config.c?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/main/stasis_config.c (original) +++ team/dlee/asterisk-info/main/stasis_config.c Mon Jul 29 16:14:12 2013 @@ -70,7 +70,7 @@ struct stasis_threadpool_conf *threadpool; }; -/*! \brief Mapping of the stasis http conf struct's globals to the +/*! \brief Mapping of the stasis conf struct's globals to the * threadpool context in the config file. */ static struct aco_type threadpool_option = { .type = ACO_GLOBAL, Modified: team/dlee/asterisk-info/res/Makefile URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/res/Makefile?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/res/Makefile (original) +++ team/dlee/asterisk-info/res/Makefile Mon Jul 29 16:14:12 2013 @@ -73,18 +73,18 @@ ael/pval.o: ael/pval.c clean:: - rm -f snmp/*.[oi] ael/*.[oi] ais/*.[oi] stasis_http/*.[oi] + rm -f snmp/*.[oi] ael/*.[oi] ais/*.[oi] ari/*.[oi] rm -f res_sip/*.[oi] stasis/*.[oi] rm -f parking/*.o parking/*.i $(if $(filter res_parking,$(EMBEDDED_MODS)),modules.link,res_parking.so): $(subst .c,.o,$(wildcard parking/*.c)) $(subst .c,.o,$(wildcard parking/*.c)): _ASTCFLAGS+=$(call MOD_ASTCFLAGS,res_parking) -res_stasis_http.so: stasis_http/cli.o stasis_http/config.o stasis_http/ari_websockets.o -stasis_http/cli.o stasis_http/config.o stasis_http/ari_websockets.o: _ASTCFLAGS+=$(call MOD_ASTCFLAGS,res_stasis_http) +res_ari.so: ari/cli.o ari/config.o ari/ari_websockets.o +ari/cli.o ari/config.o ari/ari_websockets.o: _ASTCFLAGS+=$(call MOD_ASTCFLAGS,res_ari) -res_ari_model.so: stasis_http/ari_model_validators.o -stasis_http/ari_model_validators.o: _ASTCFLAGS+=$(call MOD_ASTCFLAGS,res_ari_model) +res_ari_model.so: ari/ari_model_validators.o +ari/ari_model_validators.o: _ASTCFLAGS+=$(call MOD_ASTCFLAGS,res_ari_model) -# Dependencies for res_stasis_http_*.so are generated, so they're in this file -include stasis_http.make +# Dependencies for res_ari_*.so are generated, so they're in this file +include ari.make Propchange: team/dlee/asterisk-info/res/ari/ ------------------------------------------------------------------------------ --- svn:ignore (added) +++ svn:ignore Mon Jul 29 16:14:12 2013 @@ -1,0 +1,2 @@ +*.i +*.o Modified: team/dlee/asterisk-info/res/ari/ari_model_validators.c URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/res/ari/ari_model_validators.c?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/res/ari/ari_model_validators.c (original) +++ team/dlee/asterisk-info/res/ari/ari_model_validators.c Mon Jul 29 16:14:12 2013 @@ -41,6 +41,42 @@ struct ast_json_iter *iter; for (iter = ast_json_object_iter(json); iter; iter = ast_json_object_iter_next(json, iter)) { + if (strcmp("build", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + prop_is_valid = ast_ari_validate_build_info( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI AsteriskInfo field build failed validation\n"); + res = 0; + } + } else + if (strcmp("config", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + prop_is_valid = ast_ari_validate_config_info( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI AsteriskInfo field config failed validation\n"); + res = 0; + } + } else + if (strcmp("status", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + prop_is_valid = ast_ari_validate_status_info( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI AsteriskInfo field status failed validation\n"); + res = 0; + } + } else + if (strcmp("system", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + prop_is_valid = ast_ari_validate_system_info( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI AsteriskInfo field system failed validation\n"); + res = 0; + } + } else { ast_log(LOG_ERROR, "ARI AsteriskInfo has undocumented field %s\n", @@ -55,6 +91,383 @@ ari_validator ast_ari_validate_asterisk_info_fn(void) { return ast_ari_validate_asterisk_info; +} + +int ast_ari_validate_build_info(struct ast_json *json) +{ + int res = 1; + struct ast_json_iter *iter; + int has_date = 0; + int has_kernel = 0; + int has_machine = 0; + int has_options = 0; + int has_os = 0; + int has_user = 0; + + for (iter = ast_json_object_iter(json); iter; iter = ast_json_object_iter_next(json, iter)) { + if (strcmp("date", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_date = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI BuildInfo field date failed validation\n"); + res = 0; + } + } else + if (strcmp("kernel", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_kernel = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI BuildInfo field kernel failed validation\n"); + res = 0; + } + } else + if (strcmp("machine", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_machine = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI BuildInfo field machine failed validation\n"); + res = 0; + } + } else + if (strcmp("options", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_options = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI BuildInfo field options failed validation\n"); + res = 0; + } + } else + if (strcmp("os", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_os = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI BuildInfo field os failed validation\n"); + res = 0; + } + } else + if (strcmp("user", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_user = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI BuildInfo field user failed validation\n"); + res = 0; + } + } else + { + ast_log(LOG_ERROR, + "ARI BuildInfo has undocumented field %s\n", + ast_json_object_iter_key(iter)); + res = 0; + } + } + + if (!has_date) { + ast_log(LOG_ERROR, "ARI BuildInfo missing required field date\n"); + res = 0; + } + + if (!has_kernel) { + ast_log(LOG_ERROR, "ARI BuildInfo missing required field kernel\n"); + res = 0; + } + + if (!has_machine) { + ast_log(LOG_ERROR, "ARI BuildInfo missing required field machine\n"); + res = 0; + } + + if (!has_options) { + ast_log(LOG_ERROR, "ARI BuildInfo missing required field options\n"); + res = 0; + } + + if (!has_os) { + ast_log(LOG_ERROR, "ARI BuildInfo missing required field os\n"); + res = 0; + } + + if (!has_user) { + ast_log(LOG_ERROR, "ARI BuildInfo missing required field user\n"); + res = 0; + } + + return res; +} + +ari_validator ast_ari_validate_build_info_fn(void) +{ + return ast_ari_validate_build_info; +} + +int ast_ari_validate_config_info(struct ast_json *json) +{ + int res = 1; + struct ast_json_iter *iter; + int has_default_language = 0; + int has_name = 0; + int has_setid = 0; + + for (iter = ast_json_object_iter(json); iter; iter = ast_json_object_iter_next(json, iter)) { + if (strcmp("default_language", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_default_language = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI ConfigInfo field default_language failed validation\n"); + res = 0; + } + } else + if (strcmp("max_channels", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + prop_is_valid = ast_ari_validate_int( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI ConfigInfo field max_channels failed validation\n"); + res = 0; + } + } else + if (strcmp("max_load", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + prop_is_valid = ast_ari_validate_double( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI ConfigInfo field max_load failed validation\n"); + res = 0; + } + } else + if (strcmp("max_open_files", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + prop_is_valid = ast_ari_validate_int( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI ConfigInfo field max_open_files failed validation\n"); + res = 0; + } + } else + if (strcmp("name", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_name = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI ConfigInfo field name failed validation\n"); + res = 0; + } + } else + if (strcmp("setid", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_setid = 1; + prop_is_valid = ast_ari_validate_set_id( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI ConfigInfo field setid failed validation\n"); + res = 0; + } + } else + { + ast_log(LOG_ERROR, + "ARI ConfigInfo has undocumented field %s\n", + ast_json_object_iter_key(iter)); + res = 0; + } + } + + if (!has_default_language) { + ast_log(LOG_ERROR, "ARI ConfigInfo missing required field default_language\n"); + res = 0; + } + + if (!has_name) { + ast_log(LOG_ERROR, "ARI ConfigInfo missing required field name\n"); + res = 0; + } + + if (!has_setid) { + ast_log(LOG_ERROR, "ARI ConfigInfo missing required field setid\n"); + res = 0; + } + + return res; +} + +ari_validator ast_ari_validate_config_info_fn(void) +{ + return ast_ari_validate_config_info; +} + +int ast_ari_validate_set_id(struct ast_json *json) +{ + int res = 1; + struct ast_json_iter *iter; + int has_group = 0; + int has_user = 0; + + for (iter = ast_json_object_iter(json); iter; iter = ast_json_object_iter_next(json, iter)) { + if (strcmp("group", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_group = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI SetId field group failed validation\n"); + res = 0; + } + } else + if (strcmp("user", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_user = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI SetId field user failed validation\n"); + res = 0; + } + } else + { + ast_log(LOG_ERROR, + "ARI SetId has undocumented field %s\n", + ast_json_object_iter_key(iter)); + res = 0; + } + } + + if (!has_group) { + ast_log(LOG_ERROR, "ARI SetId missing required field group\n"); + res = 0; + } + + if (!has_user) { + ast_log(LOG_ERROR, "ARI SetId missing required field user\n"); + res = 0; + } + + return res; +} + +ari_validator ast_ari_validate_set_id_fn(void) +{ + return ast_ari_validate_set_id; +} + +int ast_ari_validate_status_info(struct ast_json *json) +{ + int res = 1; + struct ast_json_iter *iter; + int has_last_reload_time = 0; + int has_startup_time = 0; + + for (iter = ast_json_object_iter(json); iter; iter = ast_json_object_iter_next(json, iter)) { + if (strcmp("last_reload_time", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_last_reload_time = 1; + prop_is_valid = ast_ari_validate_date( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI StatusInfo field last_reload_time failed validation\n"); + res = 0; + } + } else + if (strcmp("startup_time", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_startup_time = 1; + prop_is_valid = ast_ari_validate_date( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI StatusInfo field startup_time failed validation\n"); + res = 0; + } + } else + { + ast_log(LOG_ERROR, + "ARI StatusInfo has undocumented field %s\n", + ast_json_object_iter_key(iter)); + res = 0; + } + } + + if (!has_last_reload_time) { + ast_log(LOG_ERROR, "ARI StatusInfo missing required field last_reload_time\n"); + res = 0; + } + + if (!has_startup_time) { + ast_log(LOG_ERROR, "ARI StatusInfo missing required field startup_time\n"); + res = 0; + } + + return res; +} + +ari_validator ast_ari_validate_status_info_fn(void) +{ + return ast_ari_validate_status_info; +} + +int ast_ari_validate_system_info(struct ast_json *json) +{ + int res = 1; + struct ast_json_iter *iter; + int has_entity_id = 0; + int has_version = 0; + + for (iter = ast_json_object_iter(json); iter; iter = ast_json_object_iter_next(json, iter)) { + if (strcmp("entity_id", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_entity_id = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI SystemInfo field entity_id failed validation\n"); + res = 0; + } + } else + if (strcmp("version", ast_json_object_iter_key(iter)) == 0) { + int prop_is_valid; + has_version = 1; + prop_is_valid = ast_ari_validate_string( + ast_json_object_iter_value(iter)); + if (!prop_is_valid) { + ast_log(LOG_ERROR, "ARI SystemInfo field version failed validation\n"); + res = 0; + } + } else + { + ast_log(LOG_ERROR, + "ARI SystemInfo has undocumented field %s\n", + ast_json_object_iter_key(iter)); + res = 0; + } + } + + if (!has_entity_id) { + ast_log(LOG_ERROR, "ARI SystemInfo missing required field entity_id\n"); + res = 0; + } + + if (!has_version) { + ast_log(LOG_ERROR, "ARI SystemInfo missing required field version\n"); + res = 0; + } + + return res; +} + +ari_validator ast_ari_validate_system_info_fn(void) +{ + return ast_ari_validate_system_info; } int ast_ari_validate_variable(struct ast_json *json) Modified: team/dlee/asterisk-info/res/ari/ari_model_validators.h URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/res/ari/ari_model_validators.h?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/res/ari/ari_model_validators.h (original) +++ team/dlee/asterisk-info/res/ari/ari_model_validators.h Mon Jul 29 16:14:12 2013 @@ -162,6 +162,96 @@ ari_validator ast_ari_validate_asterisk_info_fn(void); /*! + * \brief Validator for BuildInfo. + * + * Info about how Asterisk was built + * + * \param json JSON object to validate. + * \returns True (non-zero) if valid. + * \returns False (zero) if invalid. + */ +int ast_ari_validate_build_info(struct ast_json *json); + +/*! + * \brief Function pointer to ast_ari_validate_build_info(). + * + * See \ref ast_ari_model_validators.h for more details. + */ +ari_validator ast_ari_validate_build_info_fn(void); + +/*! + * \brief Validator for ConfigInfo. + * + * Info about Asterisk configuration + * + * \param json JSON object to validate. + * \returns True (non-zero) if valid. + * \returns False (zero) if invalid. + */ +int ast_ari_validate_config_info(struct ast_json *json); + +/*! + * \brief Function pointer to ast_ari_validate_config_info(). + * + * See \ref ast_ari_model_validators.h for more details. + */ +ari_validator ast_ari_validate_config_info_fn(void); + +/*! + * \brief Validator for SetId. + * + * Effective user/group id + * + * \param json JSON object to validate. + * \returns True (non-zero) if valid. + * \returns False (zero) if invalid. + */ +int ast_ari_validate_set_id(struct ast_json *json); + +/*! + * \brief Function pointer to ast_ari_validate_set_id(). + * + * See \ref ast_ari_model_validators.h for more details. + */ +ari_validator ast_ari_validate_set_id_fn(void); + +/*! + * \brief Validator for StatusInfo. + * + * Info about Asterisk status + * + * \param json JSON object to validate. + * \returns True (non-zero) if valid. + * \returns False (zero) if invalid. + */ +int ast_ari_validate_status_info(struct ast_json *json); + +/*! + * \brief Function pointer to ast_ari_validate_status_info(). + * + * See \ref ast_ari_model_validators.h for more details. + */ +ari_validator ast_ari_validate_status_info_fn(void); + +/*! + * \brief Validator for SystemInfo. + * + * Info about Asterisk + * + * \param json JSON object to validate. + * \returns True (non-zero) if valid. + * \returns False (zero) if invalid. + */ +int ast_ari_validate_system_info(struct ast_json *json); + +/*! + * \brief Function pointer to ast_ari_validate_system_info(). + * + * See \ref ast_ari_model_validators.h for more details. + */ +ari_validator ast_ari_validate_system_info_fn(void); + +/*! * \brief Validator for Variable. * * The value of a channel variable @@ -785,6 +875,33 @@ * JSON models * * AsteriskInfo + * - build: BuildInfo + * - config: ConfigInfo + * - status: StatusInfo + * - system: SystemInfo + * BuildInfo + * - date: string (required) + * - kernel: string (required) + * - machine: string (required) + * - options: string (required) + * - os: string (required) + * - user: string (required) + * ConfigInfo + * - default_language: string (required) + * - max_channels: int + * - max_load: double + * - max_open_files: int + * - name: string (required) + * - setid: SetId (required) + * SetId + * - group: string (required) + * - user: string (required) + * StatusInfo + * - last_reload_time: Date (required) + * - startup_time: Date (required) + * SystemInfo + * - entity_id: string (required) + * - version: string (required) * Variable * - value: string (required) * Endpoint Modified: team/dlee/asterisk-info/res/ari/resource_asterisk.c URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/res/ari/resource_asterisk.c?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/res/ari/resource_asterisk.c (original) +++ team/dlee/asterisk-info/res/ari/resource_asterisk.c Mon Jul 29 16:14:12 2013 @@ -18,7 +18,7 @@ /*! \file * - * \brief Implementation for ARI stubs. + * \brief Implementation for stasis-http stubs. * * \author David M. Lee, II <[email protected]> */ @@ -31,12 +31,113 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") +#include "asterisk/ast_version.h" +#include "asterisk/buildinfo.h" +#include "asterisk/paths.h" +#include "asterisk/pbx.h" #include "resource_asterisk.h" -#include "asterisk/pbx.h" -void ast_ari_get_asterisk_info(struct ast_variable *headers, struct ast_get_asterisk_info_args *args, struct ast_ari_response *response) +void ast_ari_get_asterisk_info(struct ast_variable *headers, + struct ast_get_asterisk_info_args *args, + struct ast_ari_response *response) { - ast_log(LOG_ERROR, "TODO: ari_get_asterisk_info\n"); + RAII_VAR(struct ast_json *, json, NULL, ast_json_unref); + int show_all = args->only_count == 0; + int show_build = show_all; + int show_system = show_all; + int show_config = show_all; + int show_status = show_all; + size_t i; + int res = 0; + + for (i = 0; i < args->only_count; ++i) { + if (strcasecmp("build", args->only[i]) == 0) { + show_build = 1; + } else if (strcasecmp("system", args->only[i]) == 0) { + show_system = 1; + } else if (strcasecmp("config", args->only[i]) == 0) { + show_config = 1; + } else if (strcasecmp("status", args->only[i]) == 0) { + show_status = 1; + } else { + ast_log(LOG_WARNING, "Unrecognized info section '%s'\n", + args->only[i]); + } + } + + json = ast_json_object_create(); + + if (show_build) { + res |= ast_json_object_set(json, "build", + ast_json_pack( + "{ s: s, s: s, s: s," + " s: s, s: s, s: s }", + + "os", ast_build_os, + "kernel", ast_build_kernel, + "machine", ast_build_machine, + + "options", AST_BUILDOPTS, + "date", ast_build_date, + "user", ast_build_user)); + } + + if (show_system) { + char eid_str[128]; + + ast_eid_to_str(eid_str, sizeof(eid_str), &ast_eid_default); + + res |= ast_json_object_set(json, "system", + ast_json_pack("{ s: s, s: s }", + "version", ast_get_version(), + "entity_id", eid_str)); + } + + if (show_config) { + struct ast_json *config = ast_json_pack( + "{ s: s, s: s," + " s: { s: s, s: s } }", + + "name", ast_config_AST_SYSTEM_NAME, + "default_language", defaultlanguage, + + "setid", + "user", ast_config_AST_RUN_USER, + "group", ast_config_AST_RUN_GROUP); + + res |= ast_json_object_set(json, "config", config); + + if (option_maxcalls) { + res |= ast_json_object_set(config, "max_channels", + ast_json_integer_create(option_maxcalls)); + } + + if (option_maxfiles) { + res |= ast_json_object_set(config, "max_open_files", + ast_json_integer_create(option_maxfiles)); + } + + if (option_maxload) { + res |= ast_json_object_set(config, "max_load", + ast_json_real_create(option_maxload)); + } + } + + if (show_status) { + res |= ast_json_object_set(json, "status", + ast_json_pack("{ s: o, s: o }", + "startup_time", + ast_json_timeval(ast_startuptime, NULL), + "last_reload_time", + ast_json_timeval(ast_lastreloadtime, NULL))); + } + + if (res != 0) { + ast_ari_response_alloc_failed(response); + return; + } + + ast_ari_response_ok(response, ast_json_ref(json)); } void ast_ari_get_global_var(struct ast_variable *headers, struct ast_get_global_var_args *args, struct ast_ari_response *response) Propchange: team/dlee/asterisk-info/res/parking/parking_devicestate.c ------------------------------------------------------------------------------ --- svn:keywords (original) +++ svn:keywords Mon Jul 29 16:14:12 2013 @@ -1,1 +1,1 @@ -"Author Date Id Revision" +Author Date Id Revision Modified: team/dlee/asterisk-info/res/res_ari_model.c URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/res/res_ari_model.c?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/res/res_ari_model.c (original) +++ team/dlee/asterisk-info/res/res_ari_model.c Mon Jul 29 16:14:12 2013 @@ -31,7 +31,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") -#include "stasis_http/ari_model_validators.h" +#include "ari/ari_model_validators.h" #include "asterisk/logger.h" #include "asterisk/module.h" #include "asterisk/utils.h" @@ -90,18 +90,18 @@ return 1; } -int ari_validate_void(struct ast_json *json) +int ast_ari_validate_void(struct ast_json *json) { return check_type(json, AST_JSON_NULL); } -int ari_validate_byte(struct ast_json *json) +int ast_ari_validate_byte(struct ast_json *json) { /* Java bytes are signed, which accounts for great fun for all */ return check_range(-128, 255, json); } -int ari_validate_boolean(struct ast_json *json) +int ast_ari_validate_boolean(struct ast_json *json) { enum ast_json_type actual = ast_json_typeof(json); switch (actual) { @@ -115,34 +115,34 @@ } } -int ari_validate_int(struct ast_json *json) +int ast_ari_validate_int(struct ast_json *json) { /* Swagger int's are 32-bit */ return check_range(-2147483648LL, 2147483647LL, json); } -int ari_validate_long(struct ast_json *json) +int ast_ari_validate_long(struct ast_json *json) { /* All integral values are valid longs. No need for range check. */ return check_type(json, AST_JSON_INTEGER); } -int ari_validate_float(struct ast_json *json) +int ast_ari_validate_float(struct ast_json *json) { return check_type(json, AST_JSON_REAL); } -int ari_validate_double(struct ast_json *json) +int ast_ari_validate_double(struct ast_json *json) { return check_type(json, AST_JSON_REAL); } -int ari_validate_string(struct ast_json *json) +int ast_ari_validate_string(struct ast_json *json) { return check_type(json, AST_JSON_STRING); } -int ari_validate_date(struct ast_json *json) +int ast_ari_validate_date(struct ast_json *json) { /* Dates are ISO-8601 strings */ const char *str; @@ -158,7 +158,7 @@ return 1; } -int ari_validate_list(struct ast_json *json, int (*fn)(struct ast_json *)) +int ast_ari_validate_list(struct ast_json *json, int (*fn)(struct ast_json *)) { int res = 1; size_t i; Modified: team/dlee/asterisk-info/res/res_ari_model.exports.in URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/res/res_ari_model.exports.in?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/res/res_ari_model.exports.in (original) +++ team/dlee/asterisk-info/res/res_ari_model.exports.in Mon Jul 29 16:14:12 2013 @@ -1,6 +1,6 @@ { global: - LINKER_SYMBOL_PREFIXari_*; + LINKER_SYMBOL_PREFIXast_ari_*; local: *; }; Modified: team/dlee/asterisk-info/res/res_sip.c URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/res/res_sip.c?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/res/res_sip.c (original) +++ team/dlee/asterisk-info/res/res_sip.c Mon Jul 29 16:14:12 2013 @@ -292,17 +292,26 @@ </description> </configOption> <configOption name="trust_id_inbound" default="no"> - <synopsis>Trust inbound CallerID information from endpoint</synopsis> - <description><para>This option determines whether res_sip will accept identification from the endpoint - received in a P-Asserted-Identity or Remote-Party-ID header. If <literal>no</literal>, - the configured Caller-ID from res_sip.conf will always be used as the identity for the - endpoint.</para></description> + <synopsis>Accept identification information received from this endpoint</synopsis> + <description><para>This option determines whether Asterisk will accept + identification from the endpoint from headers such as P-Asserted-Identity + or Remote-Party-ID header. This option applies both to calls originating from the + endpoint and calls originating from Asterisk. If <literal>no</literal>, the + configured Caller-ID from res_sip.conf will always be used as the identity for + the endpoint.</para></description> </configOption> <configOption name="trust_id_outbound" default="no"> - <synopsis>Trust endpoint with private CallerID information</synopsis> - <description><para>This option determines whether res_sip will send identification - information to the endpoint that has been marked as private. If <literal>no</literal>, - private Caller-ID information will not be forwarded to the endpoint.</para></description> + <synopsis>Send private identification details to the endpoint.</synopsis> + <description><para>This option determines whether res_sip will send private + identification information to the endpoint. If <literal>no</literal>, + private Caller-ID information will not be forwarded to the endpoint. + "Private" in this case refers to any method of restricting identification. + Example: setting <replaceable>callerid_privacy</replaceable> to any + <literal>prohib</literal> variation. + Example: If <replaceable>trust_id_inbound</replaceable> is set to + <literal>yes</literal>, the presence of a <literal>Privacy: id</literal> + header in a SIP request or response would indicate the identification + provided in the request is private.</para></description> </configOption> <configOption name="type"> <synopsis>Must be of type 'endpoint'.</synopsis> @@ -1789,7 +1798,6 @@ ast_pjsip_endpoint = NULL; } pj_caching_pool_destroy(&caching_pool); - /* XXX Should have a way of stopping monitor thread */ return AST_MODULE_LOAD_DECLINE; } Modified: team/dlee/asterisk-info/res/res_statsd.c URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/res/res_statsd.c?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/res/res_statsd.c (original) +++ team/dlee/asterisk-info/res/res_statsd.c Mon Jul 29 16:14:12 2013 @@ -34,7 +34,7 @@ <configObject name="global"> <synopsis>Global configuration settings</synopsis> <configOption name="enabled"> - <synopsis>Enable/disable the stasis-http module</synopsis> + <synopsis>Enable/disable the statsd module</synopsis> </configOption> <configOption name="server"> <synopsis>Address of the statsd server</synopsis> @@ -161,7 +161,7 @@ sample_rate); } -/*! \brief Mapping of the stasis http conf struct's globals to the +/*! \brief Mapping of the statsd conf struct's globals to the * general context in the config file. */ static struct aco_type global_option = { .type = ACO_GLOBAL, @@ -173,7 +173,7 @@ static struct aco_type *global_options[] = ACO_TYPES(&global_option); -/*! \brief Disposes of the stasis http conf object */ +/*! \brief Disposes of the statsd conf object */ static void conf_destructor(void *obj) { struct conf *cfg = obj; Modified: team/dlee/asterisk-info/rest-api-templates/ari_model_validators.c.mustache URL: http://svnview.digium.com/svn/asterisk/team/dlee/asterisk-info/rest-api-templates/ari_model_validators.c.mustache?view=diff&rev=395711&r1=395710&r2=395711 ============================================================================== --- team/dlee/asterisk-info/rest-api-templates/ari_model_validators.c.mustache (original) +++ team/dlee/asterisk-info/rest-api-templates/ari_model_validators.c.mustache Mon Jul 29 16:14:12 2013 @@ -36,7 +36,7 @@ {{#api_declaration}} {{#models}} -int ari_validate_{{c_id}}(struct ast_json *json) [... 1139 lines stripped ...] -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- svn-commits mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/svn-commits
