diff options
-rw-r--r-- | include/asterisk.h | 2 | ||||
-rw-r--r-- | include/asterisk/manager.h | 1 | ||||
-rw-r--r-- | include/asterisk/options.h | 1 | ||||
-rw-r--r-- | main/manager.c | 50 |
4 files changed, 53 insertions, 1 deletions
diff --git a/include/asterisk.h b/include/asterisk.h index 6ec3c8452..bdd59402e 100644 --- a/include/asterisk.h +++ b/include/asterisk.h @@ -63,6 +63,8 @@ extern char ast_config_AST_KEY_DIR[PATH_MAX]; extern char ast_config_AST_PID[PATH_MAX]; extern char ast_config_AST_SOCKET[PATH_MAX]; extern char ast_config_AST_RUN_DIR[PATH_MAX]; +extern char ast_config_AST_RUN_GROUP[PATH_MAX]; +extern char ast_config_AST_RUN_USER[PATH_MAX]; extern char ast_config_AST_CTL_PERMISSIONS[PATH_MAX]; extern char ast_config_AST_CTL_OWNER[PATH_MAX]; extern char ast_config_AST_CTL_GROUP[PATH_MAX]; diff --git a/include/asterisk/manager.h b/include/asterisk/manager.h index fd1ed4ac5..8d1e8579f 100644 --- a/include/asterisk/manager.h +++ b/include/asterisk/manager.h @@ -45,6 +45,7 @@ You can find a reference of standard headers in doc/manager.txt */ +#define AMI_VERSION "1.0" #define DEFAULT_MANAGER_PORT 5038 /* Default port for Asterisk management via TCP */ #define EVENT_FLAG_SYSTEM (1 << 0) /* System events such as module load/unload */ diff --git a/include/asterisk/options.h b/include/asterisk/options.h index f94cf6e0e..7a08796a5 100644 --- a/include/asterisk/options.h +++ b/include/asterisk/options.h @@ -110,6 +110,7 @@ enum ast_option_flags { extern struct ast_flags ast_options; extern int option_verbose; +extern int option_maxfiles; /*!< Max number of open file handles (files, sockets) */ extern int option_debug; /*!< Debugging */ extern int option_maxcalls; /*!< Maximum number of simultaneous channels */ extern double option_maxload; diff --git a/main/manager.c b/main/manager.c index 8b0381e61..f229fa5e7 100644 --- a/main/manager.c +++ b/main/manager.c @@ -76,6 +76,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #include "asterisk/acl.h" #include "asterisk/utils.h" #include "asterisk/http.h" +#include "asterisk/version.h" #include "asterisk/threadstorage.h" #include "asterisk/linkedlists.h" @@ -2158,6 +2159,52 @@ static int action_userevent(struct mansession *s, const struct message *m) return 0; } +static char mandescr_coresettings[] = +"Description: Query for Core PBX settings.\n" +"Variables: (Names marked with * are optional)\n" +" *ActionID: ActionID of this transaction\n"; + +/*! \brief Show PBX core settings information */ +static int action_coresettings(struct mansession *s, const struct message *m) +{ + const char *actionid = astman_get_header(m, "ActionID"); + char idText[150]; + + if (!ast_strlen_zero(actionid)) { + snprintf(idText, sizeof(idText), "ActionID: %s\r\n", actionid); + } + + astman_append(s, "Response: Success\r\n" + "%s" + "AMIversion: %s\r\n" + "AsteriskVersion: %s\r\n" + "SystemName: %s\r\n" + "CoreMaxCalls: %d\r\n" + "CoreMaxLoadAvg: %f\r\n" + "CoreRunUser: %s\r\n" + "CoreRunGroup: %s\r\n" + "CoreMaxFilehandles: %d\r\n" + "CoreRealTimeEnabled: %s\r\n" + "CoreCDRenabled: %s\r\n" + "CoreHTTPenabled: %s\r\n" + , + AMI_VERSION, + idText, + ASTERISK_VERSION, + ast_config_AST_SYSTEM_NAME, + option_maxcalls, + option_maxload, + ast_config_AST_RUN_USER, + ast_config_AST_RUN_GROUP, + option_maxfiles, + ast_realtime_enabled() ? "Yes" : "No", + check_cdr_enabled() ? "Yes" : "No", + check_webmanager_enabled() ? "Yes" : "No" + ); + return 0; +} + + /* * Done with the action handlers here, we start with the code in charge * of accepting connections and serving them. @@ -2354,7 +2401,7 @@ static void *session_do(void *data) /* Hook to the tail of the event queue */ s->last_ev = grab_last(); s->f = ser->f; - astman_append(s, "Asterisk Call Manager/1.0\r\n"); /* welcome prompt */ + astman_append(s, "Asterisk Call Manager/%s\r\n", AMI_VERSION); /* welcome prompt */ for (;;) { if ((res = do_message(s)) < 0) break; @@ -3124,6 +3171,7 @@ int init_manager(void) ast_manager_register2("SendText", EVENT_FLAG_CALL, action_sendtext, "Send text message to channel", mandescr_sendtext); ast_manager_register2("UserEvent", EVENT_FLAG_USER, action_userevent, "Send an arbitrary event", mandescr_userevent); ast_manager_register2("WaitEvent", 0, action_waitevent, "Wait for an event to occur", mandescr_waitevent); + ast_manager_register2("CoreSettings", EVENT_FLAG_SYSTEM, action_coresettings, "Show PBX core settings (version etc)", mandescr_coresettings); ast_cli_register_multiple(cli_manager, sizeof(cli_manager) / sizeof(struct ast_cli_entry)); ast_extension_state_add(NULL, NULL, manager_state_cb, NULL); |