;
; writetimeout = 100
;
+;displayconnects = yes ; Display on CLI user login/logoff
+;
; Authorization for various classes
;read = system,call,log,verbose,command,agent,user,config,dtmf
;write = system,call,log,verbose,command,agent,user,config,dtmf
return user;
}
+/*! \brief Get displayconnects config option.
+ * \param s manager session to get parameter from.
+ * \return displayconnects config option value.
+ */
+static int manager_displayconnects (struct mansession *s)
+{
+ struct ast_manager_user *user = NULL;
+ int ret = 0;
+
+ AST_LIST_LOCK(&users);
+ if ((user = get_manager_by_name_locked (s->username)))
+ ret = user->displayconnects;
+ AST_LIST_UNLOCK(&users);
+
+ return ret;
+}
+
/*! \note The actionlock is read-locked by the caller of this function */
static int handle_showmancmd(int fd, int argc, char *argv[])
{
}
s->authenticated = 1;
if (option_verbose > 1) {
- if (displayconnects) {
+ if (manager_displayconnects(s)) {
ast_verbose(VERBOSE_PREFIX_2 "%sManager '%s' logged on from %s\n", (s->managerid ? "HTTP " : ""), s->username, ast_inet_ntoa(s->sin.sin_addr));
}
}
/* session is over, explain why and terminate */
if (s->authenticated) {
if (option_verbose > 1) {
- if (displayconnects)
+ if (manager_displayconnects(s))
ast_verbose(VERBOSE_PREFIX_2 "Manager '%s' logged off from %s\n", s->username, ast_inet_ntoa(s->sin.sin_addr));
}
ast_log(LOG_EVENT, "Manager '%s' logged off from %s\n", s->username, ast_inet_ntoa(s->sin.sin_addr));
if (s->sessiontimeout && (now > s->sessiontimeout) && !s->inuse) {
AST_LIST_REMOVE_CURRENT(&sessions, list);
ast_atomic_fetchadd_int(&num_sessions, -1);
- if (s->authenticated && (option_verbose > 1) && displayconnects) {
+ if (s->authenticated && (option_verbose > 1) && manager_displayconnects(s)) {
ast_verbose(VERBOSE_PREFIX_2 "HTTP Manager '%s' timed out from %s\n",
s->username, ast_inet_ntoa(s->sin.sin_addr));
}
if (process_message(s, &m)) {
if (s->authenticated) {
if (option_verbose > 1) {
- if (displayconnects)
+ if (manager_displayconnects(s))
ast_verbose(VERBOSE_PREFIX_2 "HTTP Manager '%s' logged off from %s\n", s->username, ast_inet_ntoa(s->sin.sin_addr));
}
ast_log(LOG_EVENT, "HTTP Manager '%s' logged off from %s\n", s->username, ast_inet_ntoa(s->sin.sin_addr));
/* Make sure we keep this user and don't destroy it during cleanup */
user->keep = 1;
+ /* Default displayconnect to [general] */
+ user->displayconnects = displayconnects;
var = ast_variable_browse(cfg, cat);
while (var) {