diff options
author | Sean Bright <sean.bright@gmail.com> | 2017-07-05 11:29:01 -0400 |
---|---|---|
committer | Sean Bright <sean.bright@gmail.com> | 2017-07-05 11:25:58 -0500 |
commit | 325eeced6a7edea019cc6a013460f617d10bfc28 (patch) | |
tree | 3484e7e9df9081ea97a003964993ff7087d558b3 /channels/chan_iax2.c | |
parent | b62a3f0a67628e99cfceca36bafb1362788700ff (diff) |
core: Remove 'Data Retrieval API'
This API was not actively maintained, was not added to new modules
(such as res_pjsip), and there exist better alternatives to acquire the
same information, such as the ARI.
Change-Id: I4b2185a83aeb74798b4ad43ff8f89f971096aa83
Diffstat (limited to 'channels/chan_iax2.c')
-rw-r--r-- | channels/chan_iax2.c | 334 |
1 files changed, 0 insertions, 334 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index d15b55d72..f40873e9d 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -106,7 +106,6 @@ #include "asterisk/timing.h" #include "asterisk/taskprocessor.h" #include "asterisk/test.h" -#include "asterisk/data.h" #include "asterisk/security_events.h" #include "asterisk/stasis_endpoints.h" #include "asterisk/bridge.h" @@ -1950,19 +1949,6 @@ static int iax2_parse_allow_disallow(struct iax2_codec_pref *pref, iax2_format * return res; } -static int iax2_data_add_codecs(struct ast_data *root, const char *node_name, iax2_format formats) -{ - int res; - struct ast_format_cap *cap = ast_format_cap_alloc(AST_FORMAT_CAP_FLAG_DEFAULT); - if (!cap) { - return -1; - } - iax2_format_compatibility_bitfield2cap(formats, cap); - res = ast_data_add_codecs(root, node_name, cap); - ao2_ref(cap, -1); - return res; -} - /*! * \note The only member of the peer passed here guaranteed to be set is the name field */ @@ -14555,129 +14541,6 @@ static struct ast_cli_entry cli_iax2[] = { #endif /* IAXTESTS */ }; -#ifdef TEST_FRAMEWORK -AST_TEST_DEFINE(test_iax2_peers_get) -{ - struct ast_data_query query = { - .path = "/asterisk/channel/iax2/peers", - .search = "peers/peer/name=test_peer_data_provider" - }; - struct ast_data *node; - struct iax2_peer *peer; - - switch (cmd) { - case TEST_INIT: - info->name = "iax2_peers_get_data_test"; - info->category = "/main/data/iax2/peers/"; - info->summary = "IAX2 peers data providers unit test"; - info->description = - "Tests whether the IAX2 peers data provider implementation works as expected."; - return AST_TEST_NOT_RUN; - case TEST_EXECUTE: - break; - } - - /* build a test peer */ - peer = build_peer("test_peer_data_provider", NULL, NULL, 0); - if (!peer) { - return AST_TEST_FAIL; - } - peer->expiry= 1010; - ao2_link(peers, peer); - - node = ast_data_get(&query); - if (!node) { - ao2_unlink(peers, peer); - peer_unref(peer); - return AST_TEST_FAIL; - } - - /* check returned data node. */ - if (strcmp(ast_data_retrieve_string(node, "peer/name"), "test_peer_data_provider")) { - ao2_unlink(peers, peer); - peer_unref(peer); - ast_data_free(node); - return AST_TEST_FAIL; - } - - if (ast_data_retrieve_int(node, "peer/expiry") != 1010) { - ao2_unlink(peers, peer); - peer_unref(peer); - ast_data_free(node); - return AST_TEST_FAIL; - } - - /* release resources */ - ast_data_free(node); - - ao2_unlink(peers, peer); - peer_unref(peer); - - return AST_TEST_PASS; -} - -AST_TEST_DEFINE(test_iax2_users_get) -{ - struct ast_data_query query = { - .path = "/asterisk/channel/iax2/users", - .search = "users/user/name=test_user_data_provider" - }; - struct ast_data *node; - struct iax2_user *user; - - switch (cmd) { - case TEST_INIT: - info->name = "iax2_users_get_data_test"; - info->category = "/main/data/iax2/users/"; - info->summary = "IAX2 users data providers unit test"; - info->description = - "Tests whether the IAX2 users data provider implementation works as expected."; - return AST_TEST_NOT_RUN; - case TEST_EXECUTE: - break; - } - - user = build_user("test_user_data_provider", NULL, NULL, 0); - if (!user) { - ast_test_status_update(test, "Failed to build a test user\n"); - return AST_TEST_FAIL; - } - user->amaflags = 1010; - ao2_link(users, user); - - node = ast_data_get(&query); - if (!node) { - ast_test_status_update(test, "The data query to find our test user failed\n"); - ao2_unlink(users, user); - user_unref(user); - return AST_TEST_FAIL; - } - - if (strcmp(ast_data_retrieve_string(node, "user/name"), "test_user_data_provider")) { - ast_test_status_update(test, "Our data results did not return the test user created in the previous step.\n"); - ao2_unlink(users, user); - user_unref(user); - ast_data_free(node); - return AST_TEST_FAIL; - } - - if (ast_data_retrieve_int(node, "user/amaflags/value") != 1010) { - ast_test_status_update(test, "The amaflags field in our test user was '%d' not the expected value '1010'\n", ast_data_retrieve_int(node, "user/amaflags/value")); - ao2_unlink(users, user); - user_unref(user); - ast_data_free(node); - return AST_TEST_FAIL; - } - - ast_data_free(node); - - ao2_unlink(users, user); - user_unref(user); - - return AST_TEST_PASS; -} -#endif - static void cleanup_thread_list(void *head) { AST_LIST_HEAD(iax2_thread_list, iax2_thread); @@ -14743,11 +14606,6 @@ static int __unload_module(void) ast_manager_unregister( "IAXnetstats" ); ast_manager_unregister( "IAXregistry" ); ast_unregister_application(papp); -#ifdef TEST_FRAMEWORK - AST_TEST_UNREGISTER(test_iax2_peers_get); - AST_TEST_UNREGISTER(test_iax2_users_get); -#endif - ast_data_unregister(NULL); ast_cli_unregister_multiple(cli_iax2, ARRAY_LEN(cli_iax2)); ast_unregister_switch(&iax2_switch); ast_channel_unregister(&iax2_tech); @@ -14889,191 +14747,6 @@ container_fail: return -1; } - -#define DATA_EXPORT_IAX2_PEER(MEMBER) \ - MEMBER(iax2_peer, name, AST_DATA_STRING) \ - MEMBER(iax2_peer, username, AST_DATA_STRING) \ - MEMBER(iax2_peer, secret, AST_DATA_PASSWORD) \ - MEMBER(iax2_peer, dbsecret, AST_DATA_PASSWORD) \ - MEMBER(iax2_peer, outkey, AST_DATA_STRING) \ - MEMBER(iax2_peer, regexten, AST_DATA_STRING) \ - MEMBER(iax2_peer, context, AST_DATA_STRING) \ - MEMBER(iax2_peer, peercontext, AST_DATA_STRING) \ - MEMBER(iax2_peer, mailbox, AST_DATA_STRING) \ - MEMBER(iax2_peer, mohinterpret, AST_DATA_STRING) \ - MEMBER(iax2_peer, mohsuggest, AST_DATA_STRING) \ - MEMBER(iax2_peer, inkeys, AST_DATA_STRING) \ - MEMBER(iax2_peer, cid_num, AST_DATA_STRING) \ - MEMBER(iax2_peer, cid_name, AST_DATA_STRING) \ - MEMBER(iax2_peer, zonetag, AST_DATA_STRING) \ - MEMBER(iax2_peer, parkinglot, AST_DATA_STRING) \ - MEMBER(iax2_peer, expiry, AST_DATA_SECONDS) \ - MEMBER(iax2_peer, callno, AST_DATA_INTEGER) \ - MEMBER(iax2_peer, lastms, AST_DATA_MILLISECONDS) \ - MEMBER(iax2_peer, maxms, AST_DATA_MILLISECONDS) \ - MEMBER(iax2_peer, pokefreqok, AST_DATA_MILLISECONDS) \ - MEMBER(iax2_peer, pokefreqnotok, AST_DATA_MILLISECONDS) \ - MEMBER(iax2_peer, historicms, AST_DATA_INTEGER) \ - MEMBER(iax2_peer, smoothing, AST_DATA_BOOLEAN) \ - MEMBER(iax2_peer, maxcallno, AST_DATA_INTEGER) - -AST_DATA_STRUCTURE(iax2_peer, DATA_EXPORT_IAX2_PEER); - -static int peers_data_provider_get(const struct ast_data_search *search, - struct ast_data *data_root) -{ - struct ast_data *data_peer; - struct iax2_peer *peer; - struct ao2_iterator i; - char status[20]; - struct ast_str *encmethods = ast_str_alloca(256); - - i = ao2_iterator_init(peers, 0); - while ((peer = ao2_iterator_next(&i))) { - data_peer = ast_data_add_node(data_root, "peer"); - if (!data_peer) { - peer_unref(peer); - continue; - } - - ast_data_add_structure(iax2_peer, data_peer, peer); - - iax2_data_add_codecs(data_peer, "codecs", peer->capability); - - peer_status(peer, status, sizeof(status)); - ast_data_add_str(data_peer, "status", status); - - ast_data_add_str(data_peer, "host", ast_sockaddr_stringify_host(&peer->addr)); - - ast_data_add_str(data_peer, "mask", ast_sockaddr_stringify_addr(&peer->mask)); - - ast_data_add_int(data_peer, "port", ast_sockaddr_port(&peer->addr)); - - ast_data_add_bool(data_peer, "trunk", ast_test_flag64(peer, IAX_TRUNK)); - - ast_data_add_bool(data_peer, "dynamic", ast_test_flag64(peer, IAX_DYNAMIC)); - - encmethods_to_str(peer->encmethods, &encmethods); - ast_data_add_str(data_peer, "encryption", peer->encmethods ? ast_str_buffer(encmethods) : "no"); - - peer_unref(peer); - - if (!ast_data_search_match(search, data_peer)) { - ast_data_remove_node(data_root, data_peer); - } - } - ao2_iterator_destroy(&i); - - return 0; -} - -#define DATA_EXPORT_IAX2_USER(MEMBER) \ - MEMBER(iax2_user, name, AST_DATA_STRING) \ - MEMBER(iax2_user, dbsecret, AST_DATA_PASSWORD) \ - MEMBER(iax2_user, accountcode, AST_DATA_STRING) \ - MEMBER(iax2_user, mohinterpret, AST_DATA_STRING) \ - MEMBER(iax2_user, mohsuggest, AST_DATA_STRING) \ - MEMBER(iax2_user, inkeys, AST_DATA_STRING) \ - MEMBER(iax2_user, language, AST_DATA_STRING) \ - MEMBER(iax2_user, cid_num, AST_DATA_STRING) \ - MEMBER(iax2_user, cid_name, AST_DATA_STRING) \ - MEMBER(iax2_user, parkinglot, AST_DATA_STRING) \ - MEMBER(iax2_user, maxauthreq, AST_DATA_INTEGER) \ - MEMBER(iax2_user, curauthreq, AST_DATA_INTEGER) - -AST_DATA_STRUCTURE(iax2_user, DATA_EXPORT_IAX2_USER); - -static int users_data_provider_get(const struct ast_data_search *search, - struct ast_data *data_root) -{ - struct ast_data *data_user, *data_authmethods, *data_enum_node; - struct iax2_user *user; - struct ao2_iterator i; - struct ast_str *auth; - char *pstr = ""; - - if (!(auth = ast_str_create(90))) { - ast_log(LOG_ERROR, "Unable to create temporary string for storing 'secret'\n"); - return 0; - } - - i = ao2_iterator_init(users, 0); - for (; (user = ao2_iterator_next(&i)); user_unref(user)) { - data_user = ast_data_add_node(data_root, "user"); - if (!data_user) { - continue; - } - - ast_data_add_structure(iax2_user, data_user, user); - - iax2_data_add_codecs(data_user, "codecs", user->capability); - - if (!ast_strlen_zero(user->secret)) { - ast_str_set(&auth, 0, "%s", user->secret); - } else if (!ast_strlen_zero(user->inkeys)) { - ast_str_set(&auth, 0, "Key: %s", user->inkeys); - } else { - ast_str_set(&auth, 0, "no secret"); - } - ast_data_add_password(data_user, "secret", ast_str_buffer(auth)); - - ast_data_add_str(data_user, "context", user->contexts ? user->contexts->context : DEFAULT_CONTEXT); - - /* authmethods */ - data_authmethods = ast_data_add_node(data_user, "authmethods"); - if (!data_authmethods) { - ast_data_remove_node(data_root, data_user); - continue; - } - ast_data_add_bool(data_authmethods, "rsa", user->authmethods & IAX_AUTH_RSA); - ast_data_add_bool(data_authmethods, "md5", user->authmethods & IAX_AUTH_MD5); - ast_data_add_bool(data_authmethods, "plaintext", user->authmethods & IAX_AUTH_PLAINTEXT); - - /* amaflags */ - data_enum_node = ast_data_add_node(data_user, "amaflags"); - if (!data_enum_node) { - ast_data_remove_node(data_root, data_user); - continue; - } - ast_data_add_int(data_enum_node, "value", user->amaflags); - ast_data_add_str(data_enum_node, "text", ast_channel_amaflags2string(user->amaflags)); - - ast_data_add_bool(data_user, "access-control", ast_acl_list_is_empty(user->acl) ? 0 : 1); - - if (ast_test_flag64(user, IAX_CODEC_NOCAP)) { - pstr = "REQ only"; - } else if (ast_test_flag64(user, IAX_CODEC_NOPREFS)) { - pstr = "disabled"; - } else { - pstr = ast_test_flag64(user, IAX_CODEC_USER_FIRST) ? "caller" : "host"; - } - ast_data_add_str(data_user, "codec-preferences", pstr); - - if (!ast_data_search_match(search, data_user)) { - ast_data_remove_node(data_root, data_user); - } - } - ao2_iterator_destroy(&i); - - ast_free(auth); - return 0; -} - -static const struct ast_data_handler peers_data_provider = { - .version = AST_DATA_HANDLER_VERSION, - .get = peers_data_provider_get -}; - -static const struct ast_data_handler users_data_provider = { - .version = AST_DATA_HANDLER_VERSION, - .get = users_data_provider_get -}; - -static const struct ast_data_entry iax2_data_providers[] = { - AST_DATA_ENTRY("asterisk/channel/iax2/peers", &peers_data_provider), - AST_DATA_ENTRY("asterisk/channel/iax2/users", &users_data_provider), -}; - /*! * \brief Load the module * @@ -15173,13 +14846,6 @@ static int load_module(void) return AST_MODULE_LOAD_DECLINE; } -#ifdef TEST_FRAMEWORK - AST_TEST_REGISTER(test_iax2_peers_get); - AST_TEST_REGISTER(test_iax2_users_get); -#endif - - /* Register AstData providers */ - ast_data_register_multiple(iax2_data_providers, ARRAY_LEN(iax2_data_providers)); ast_cli_register_multiple(cli_iax2, ARRAY_LEN(cli_iax2)); ast_register_application_xml(papp, iax2_prov_app); |