-
-static char mandescr_modulecheck[] =
-"Description: Checks if Asterisk module is loaded\n"
-"Variables: \n"
-" ActionID: <id> Action ID for this transaction. Will be returned.\n"
-" Module: <name> Asterisk module name (not including extension)\n"
-"\n"
-"Will return Success/Failure\n"
-"For success returns, the module revision number is included.\n";
-
-/* Manager function to check if module is loaded */
-static int manager_modulecheck(struct mansession *s, const struct message *m)
-{
- int res;
- const char *module = astman_get_header(m, "Module");
- const char *id = astman_get_header(m,"ActionID");
- char idText[BUFSIZ];
- const char *version;
- char filename[BUFSIZ/2];
- char *cut;
-
- snprintf(filename, sizeof(filename), module);
- if ((cut = strchr(filename, '.'))) {
- *cut = '\0';
- } else {
- cut = filename + strlen(filename);
- }
- sprintf(cut, ".so");
- ast_log(LOG_DEBUG, "**** ModuleCheck .so file %s\n", filename);
- res = ast_module_check(filename);
- if (!res) {
- astman_send_error(s, m, "Module not loaded");
- return 0;
- }
- sprintf(cut, ".c");
- ast_log(LOG_DEBUG, "**** ModuleCheck .c file %s\n", filename);
- version = ast_file_version_find(filename);
-
- if (!ast_strlen_zero(id))
- snprintf(idText, sizeof(idText), "ActionID: %s\r\n", id);
- astman_append(s, "Response: Success\r\n%s", idText);
- astman_append(s, "Version: %s\r\n\r\n", version ? version : "");
- return 0;
-}
-
-
-static char mandescr_moduleload[] =
-"Description: Loads, unloads or reloads an Asterisk module in a running system.\n"
-"Variables: \n"
-" ActionID: <id> Action ID for this transaction. Will be returned.\n"
-" Module: <name> Asterisk module name (including .so extension)\n"
-" or subsystem identifier:\n"
-" cdr, enum, dnsmgr, extconfig, manager, rtp, http\n"
-" LoadType: load | unload | reload\n"
-" The operation to be done on module\n"
-" If no module is specified for a reload loadtype, all modules are reloaded";
-
-static int manager_moduleload(struct mansession *s, const struct message *m)
-{
- int res;
- const char *module = astman_get_header(m, "Module");
- const char *loadtype = astman_get_header(m, "LoadType");
-
- if (!loadtype || strlen(loadtype) == 0)
- astman_send_error(s, m, "Incomplete ModuleLoad action.");
- if ((!module || strlen(module) == 0) && strcasecmp(loadtype, "reload") != 0)
- astman_send_error(s, m, "Need module name");
-
- if (!strcasecmp(loadtype, "load")) {
- res = ast_load_resource(module);
- if (res)
- astman_send_error(s, m, "Could not load module.");
- else
- astman_send_ack(s, m, "Module loaded.");
- } else if (!strcasecmp(loadtype, "unload")) {
- res = ast_unload_resource(module, AST_FORCE_SOFT);
- if (res)
- astman_send_error(s, m, "Could not unload module.");
- else
- astman_send_ack(s, m, "Module unloaded.");
- } else if (!strcasecmp(loadtype, "reload")) {
- if (module != NULL) {
- res = ast_module_reload(module);
- if (res == 0)
- astman_send_error(s, m, "No such module.");
- else if (res == 1)
- astman_send_error(s, m, "Module does not support reload action.");
- else
- astman_send_ack(s, m, "Module reloaded.");
- } else {
- ast_module_reload(NULL); /* Reload all modules */
- astman_send_ack(s, m, "All modules reloaded");
- }
- } else
- astman_send_error(s, m, "Incomplete ModuleLoad action.");
- return 0;
-}