diff options
author | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-01-25 22:49:24 +0000 |
---|---|---|
committer | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-01-25 22:49:24 +0000 |
commit | 25f91a64d8874a12cf65fd2526be4e75fa089a13 (patch) | |
tree | dfd200211290a1a0097b0293a9b107f028f6fd28 | |
parent | 0389dc274d22a89052e22868ebec9c565fbd525c (diff) |
Add DBDel and DBDelTree manager commands. (issue #8516 reported by dprado)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@52308 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | CHANGES | 1 | ||||
-rw-r--r-- | main/db.c | 51 |
2 files changed, 52 insertions, 0 deletions
@@ -66,6 +66,7 @@ Changes since Asterisk 1.4-beta was branched: * Added 's' option to Page application. * Added the srvlookup option to iax.conf * Added 'E' and 'V' commands to ExternalIVR. + * Added 'DBDel' and 'DBDelTree' manager commands. SIP changes ----------- @@ -588,11 +588,62 @@ static int manager_dbget(struct mansession *s, const struct message *m) return 0; } +static int manager_dbdel(struct mansession *s, const struct message *m) +{ + const char *family = astman_get_header(m, "Family"); + const char *key = astman_get_header(m, "Key"); + int res; + + if (ast_strlen_zero(family)) { + astman_send_error(s, m, "No family specified."); + return 0; + } + + if (ast_strlen_zero(key)) { + astman_send_error(s, m, "No key specified."); + return 0; + } + + res = ast_db_del(family, key); + if (res) + astman_send_error(s, m, "Database entry not found"); + else + astman_send_ack(s, m, "Key deleted successfully"); + + return 0; +} + +static int manager_dbdeltree(struct mansession *s, const struct message *m) +{ + const char *family = astman_get_header(m, "Family"); + const char *key = astman_get_header(m, "Key"); + int res; + + if (ast_strlen_zero(family)) { + astman_send_error(s, m, "No family specified."); + return 0; + } + + if (!ast_strlen_zero(key)) + res = ast_db_deltree(family, key); + else + res = ast_db_deltree(family, NULL); + + if (res) + astman_send_error(s, m, "Database entry not found"); + else + astman_send_ack(s, m, "Key tree deleted successfully"); + + return 0; +} + int astdb_init(void) { dbinit(); ast_cli_register_multiple(cli_database, sizeof(cli_database) / sizeof(struct ast_cli_entry)); ast_manager_register("DBGet", EVENT_FLAG_SYSTEM, manager_dbget, "Get DB Entry"); ast_manager_register("DBPut", EVENT_FLAG_SYSTEM, manager_dbput, "Put DB Entry"); + ast_manager_register("DBDel", EVENT_FLAG_SYSTEM, manager_dbdel, "Delete DB Entry"); + ast_manager_register("DBDelTree", EVENT_FLAG_SYSTEM, manager_dbdeltree, "Delete DB Tree"); return 0; } |