[svn-commits] branch jcollie/manager-flags r35703 - in
/team/jcollie/manager-flags: ./ incl...
svn-commits at lists.digium.com
svn-commits at lists.digium.com
Fri Jun 23 07:14:00 MST 2006
Author: jcollie
Date: Fri Jun 23 09:14:00 2006
New Revision: 35703
URL: http://svn.digium.com/view/asterisk?rev=35703&view=rev
Log:
Check in manager flag changes ported from by bug6082 branch.
Modified:
team/jcollie/manager-flags/include/asterisk/manager.h
team/jcollie/manager-flags/manager.c
Modified: team/jcollie/manager-flags/include/asterisk/manager.h
URL: http://svn.digium.com/view/asterisk/team/jcollie/manager-flags/include/asterisk/manager.h?rev=35703&r1=35702&r2=35703&view=diff
==============================================================================
--- team/jcollie/manager-flags/include/asterisk/manager.h (original)
+++ team/jcollie/manager-flags/include/asterisk/manager.h Fri Jun 23 09:14:00 2006
@@ -47,13 +47,13 @@
#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 */
-#define EVENT_FLAG_CALL (1 << 1) /* Call event, such as state change, etc */
-#define EVENT_FLAG_LOG (1 << 2) /* Log events */
-#define EVENT_FLAG_VERBOSE (1 << 3) /* Verbose messages */
-#define EVENT_FLAG_COMMAND (1 << 4) /* Ability to read/set commands */
-#define EVENT_FLAG_AGENT (1 << 5) /* Ability to read/set agent info */
-#define EVENT_FLAG_USER (1 << 6) /* Ability to read/set user info */
+#define EVENT_FLAG_SYSTEM (1 << 0) /* System events such as module load/unload */
+#define EVENT_FLAG_CALL (1 << 1) /* Call event, such as state change, etc */
+#define EVENT_FLAG_LOG (1 << 2) /* Log events */
+#define EVENT_FLAG_VERBOSE (1 << 3) /* Verbose messages */
+#define EVENT_FLAG_COMMAND (1 << 4) /* Ability to read/set commands */
+#define EVENT_FLAG_AGENT (1 << 5) /* Ability to read/set agent info */
+#define EVENT_FLAG_USER (1 << 6) /* Ability to read/set user info */
/* Export manager structures */
#define AST_MAX_MANHEADERS 80
Modified: team/jcollie/manager-flags/manager.c
URL: http://svn.digium.com/view/asterisk/team/jcollie/manager-flags/manager.c?rev=35703&r1=35702&r2=35703&view=diff
==============================================================================
--- team/jcollie/manager-flags/manager.c (original)
+++ team/jcollie/manager-flags/manager.c Fri Jun 23 09:14:00 2006
@@ -91,16 +91,31 @@
char eventdata[1];
};
-static int enabled = 0;
+enum {
+ /*! Is the manager enabled? */
+ MANAGER_FLAG_ENABLED = (1 << 0),
+ /*! Have the manager actions and CLI commands been registered? */
+ MANAGER_FLAG_REGISTERED = (1 << 1),
+ /*! Should sockets be blocking or non-blocking? */
+ MANAGER_FLAG_BLOCKING_SOCKETS = (1 << 2),
+ /*! Is the HTTP manager interface enabled? */
+ MANAGER_FLAG_WEB_ENABLED = (1 << 3),
+ /*! Have the manager URIs been registered with the HTTP server? */
+ MANAGER_FLAG_WEB_REGISTERED = (1 << 4),
+ /*! Should manager connects/disconnects be logged to the CLI? */
+ MANAGER_FLAG_DISPLAY_CONNECTS = (1 << 5),
+ /*! Should a timestamp be added to events? */
+ MANAGER_FLAG_TIMESTAMP_EVENTS = (1 << 6)
+};
+
static int portno = DEFAULT_MANAGER_PORT;
static int asock = -1;
-static int displayconnects = 1;
-static int timestampevents = 0;
static int httptimeout = 60;
+
+static struct ast_flags global_options = { MANAGER_FLAG_DISPLAY_CONNECTS };
static pthread_t t;
AST_MUTEX_DEFINE_STATIC(sessionlock);
-static int block_sockets = 0;
static int num_sessions = 0;
struct eventqent *master_eventq = NULL;
@@ -1700,7 +1715,7 @@
} else {
s->authenticated = 1;
if (option_verbose > 1) {
- if (displayconnects) {
+ if (ast_test_flag(&global_options, MANAGER_FLAG_DISPLAY_CONNECTS)) {
ast_verbose(VERBOSE_PREFIX_2 "%sManager '%s' logged on from %s\n", (s->sessiontimeout ? "HTTP " : ""), s->username, ast_inet_ntoa(iabuf, sizeof(iabuf), s->sin.sin_addr));
}
}
@@ -1826,13 +1841,13 @@
}
if (s->authenticated) {
if (option_verbose > 1) {
- if (displayconnects)
+ if (ast_test_flag(&global_options, MANAGER_FLAG_DISPLAY_CONNECTS))
ast_verbose(VERBOSE_PREFIX_2 "Manager '%s' logged off from %s\n", s->username, ast_inet_ntoa(iabuf, sizeof(iabuf), s->sin.sin_addr));
}
ast_log(LOG_EVENT, "Manager '%s' logged off from %s\n", s->username, ast_inet_ntoa(iabuf, sizeof(iabuf), s->sin.sin_addr));
} else {
if (option_verbose > 1) {
- if (displayconnects)
+ if (ast_test_flag(&global_options, MANAGER_FLAG_DISPLAY_CONNECTS))
ast_verbose(VERBOSE_PREFIX_2 "Connect attempt from '%s' unable to authenticate\n", ast_inet_ntoa(iabuf, sizeof(iabuf), s->sin.sin_addr));
}
ast_log(LOG_EVENT, "Failed attempt from %s\n", ast_inet_ntoa(iabuf, sizeof(iabuf), s->sin.sin_addr));
@@ -1872,7 +1887,7 @@
prev->next = next;
else
sessions = next;
- if (s->authenticated && (option_verbose > 1) && displayconnects) {
+ if (s->authenticated && (option_verbose > 1) && ast_test_flag(&global_options, MANAGER_FLAG_DISPLAY_CONNECTS)) {
ast_verbose(VERBOSE_PREFIX_2 "HTTP Manager '%s' timed out from %s\n",
s->username, ast_inet_ntoa(iabuf, sizeof(iabuf), s->sin.sin_addr));
}
@@ -1919,7 +1934,7 @@
s->writetimeout = 100;
s->waiting_thread = AST_PTHREADT_NULL;
- if (!block_sockets) {
+ if (!ast_test_flag(&global_options, MANAGER_FLAG_BLOCKING_SOCKETS)) {
/* For safety, make sure socket is non-blocking */
flags = fcntl(as, F_GETFL);
fcntl(as, F_SETFL, flags | O_NONBLOCK);
@@ -1987,7 +2002,7 @@
ast_build_string(&tmp_next, &tmp_left, "Event: %s\r\nPrivilege: %s\r\n",
event, authority_to_str(category, auth, sizeof(auth)));
- if (timestampevents) {
+ if (ast_test_flag(&global_options, MANAGER_FLAG_TIMESTAMP_EVENTS)) {
now = ast_tvnow();
ast_build_string(&tmp_next, &tmp_left, "Timestamp: %ld.%06lu\r\n",
now.tv_sec, (unsigned long) now.tv_usec);
@@ -2218,13 +2233,13 @@
if (process_message(s, &m)) {
if (s->authenticated) {
if (option_verbose > 1) {
- if (displayconnects)
+ if (ast_test_flag(&global_options, MANAGER_FLAG_DISPLAY_CONNECTS))
ast_verbose(VERBOSE_PREFIX_2 "HTTP Manager '%s' logged off from %s\n", s->username, ast_inet_ntoa(iabuf, sizeof(iabuf), s->sin.sin_addr));
}
ast_log(LOG_EVENT, "HTTP Manager '%s' logged off from %s\n", s->username, ast_inet_ntoa(iabuf, sizeof(iabuf), s->sin.sin_addr));
} else {
if (option_verbose > 1) {
- if (displayconnects)
+ if (ast_test_flag(&global_options, MANAGER_FLAG_DISPLAY_CONNECTS))
ast_verbose(VERBOSE_PREFIX_2 "HTTP Connect attempt from '%s' unable to authenticate\n", ast_inet_ntoa(iabuf, sizeof(iabuf), s->sin.sin_addr));
}
ast_log(LOG_EVENT, "HTTP Failed attempt from %s\n", ast_inet_ntoa(iabuf, sizeof(iabuf), s->sin.sin_addr));
@@ -2321,9 +2336,6 @@
.callback = mxml_http_callback,
};
-static int registered = 0;
-static int webregged = 0;
-
int init_manager(void)
{
struct ast_config *cfg;
@@ -2332,9 +2344,8 @@
static struct sockaddr_in ba;
int x = 1;
int flags;
- int webenabled = 0;
int newhttptimeout = 60;
- if (!registered) {
+ if (!ast_test_flag(&global_options, MANAGER_FLAG_REGISTERED)) {
/* Register default actions */
ast_manager_register2("Ping", 0, action_ping, "Keepalive command", mandescr_ping);
ast_manager_register2("Events", 0, action_events, "Control Event Flow", mandescr_events);
@@ -2359,28 +2370,26 @@
ast_cli_register(&show_manconn_cli);
ast_cli_register(&show_maneventq_cli);
ast_extension_state_add(NULL, NULL, manager_state_cb, NULL);
- registered = 1;
+ ast_set_flag(&global_options, MANAGER_FLAG_REGISTERED);
/* Append placeholder event so master_eventq never runs dry */
append_event("Event: Placeholder\r\n\r\n", 0);
}
portno = DEFAULT_MANAGER_PORT;
- displayconnects = 1;
- cfg = ast_config_load("manager.conf");
- if (!cfg) {
+ if (!(cfg = ast_config_load("manager.conf"))) {
ast_log(LOG_NOTICE, "Unable to open management configuration manager.conf. Call management disabled.\n");
return 0;
}
- val = ast_variable_retrieve(cfg, "general", "enabled");
- if (val)
- enabled = ast_true(val);
-
- val = ast_variable_retrieve(cfg, "general", "block-sockets");
- if (val)
- block_sockets = ast_true(val);
-
- val = ast_variable_retrieve(cfg, "general", "webenabled");
- if (val)
- webenabled = ast_true(val);
+
+ ast_set2_flag(&global_options, ast_true(ast_variable_retrieve(cfg, "general", "enabled")), MANAGER_FLAG_ENABLED);
+ ast_set2_flag(&global_options, ast_true(ast_variable_retrieve(cfg, "general", "block-sockets")), MANAGER_FLAG_BLOCKING_SOCKETS);
+ ast_set2_flag(&global_options, ast_true(ast_variable_retrieve(cfg, "general", "webenabled")), MANAGER_FLAG_WEB_ENABLED);
+ ast_set2_flag(&global_options, ast_true(ast_variable_retrieve(cfg, "general", "timestampevents")), MANAGER_FLAG_TIMESTAMP_EVENTS);
+
+ /* Connections should be displayed by default so treat this one specially. */
+ if ((val = ast_variable_retrieve(cfg, "general", "displayconnects")))
+ ast_set2_flag(&global_options, ast_true(val), MANAGER_FLAG_DISPLAY_CONNECTS);
+ else
+ ast_set_flag(&global_options, MANAGER_FLAG_DISPLAY_CONNECTS);
if ((val = ast_variable_retrieve(cfg, "general", "port"))) {
if (sscanf(val, "%d", &portno) != 1) {
@@ -2389,12 +2398,6 @@
}
}
- if ((val = ast_variable_retrieve(cfg, "general", "displayconnects")))
- displayconnects = ast_true(val);
-
- if ((val = ast_variable_retrieve(cfg, "general", "timestampevents")))
- timestampevents = ast_true(val);
-
if ((val = ast_variable_retrieve(cfg, "general", "httptimeout")))
newhttptimeout = atoi(val);
@@ -2410,7 +2413,7 @@
}
- if ((asock > -1) && ((portno != oldportno) || !enabled)) {
+ if ((asock > -1) && ((portno != oldportno) || !ast_test_flag(&global_options, MANAGER_FLAG_ENABLED))) {
#if 0
/* Can't be done yet */
close(asock);
@@ -2421,19 +2424,19 @@
}
ast_config_destroy(cfg);
- if (webenabled && enabled) {
- if (!webregged) {
+ if (ast_test_flag(&global_options, MANAGER_FLAG_WEB_ENABLED) && ast_test_flag(&global_options, MANAGER_FLAG_ENABLED)) {
+ if (!ast_test_flag(&global_options, MANAGER_FLAG_WEB_REGISTERED)) {
ast_http_uri_link(&rawmanuri);
ast_http_uri_link(&manageruri);
ast_http_uri_link(&managerxmluri);
- webregged = 1;
+ ast_set_flag(&global_options, MANAGER_FLAG_WEB_REGISTERED);
}
} else {
- if (webregged) {
+ if (ast_test_flag(&global_options, MANAGER_FLAG_WEB_REGISTERED)) {
ast_http_uri_unlink(&rawmanuri);
ast_http_uri_unlink(&manageruri);
ast_http_uri_unlink(&managerxmluri);
- webregged = 0;
+ ast_clear_flag(&global_options, MANAGER_FLAG_WEB_REGISTERED);
}
}
@@ -2441,7 +2444,7 @@
httptimeout = newhttptimeout;
/* If not enabled, do nothing */
- if (!enabled)
+ if (!ast_test_flag(&global_options, MANAGER_FLAG_ENABLED)) {
return 0;
if (asock < 0) {
More information about the svn-commits
mailing list