diff options
author | mattf <mattf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-02-25 00:00:35 +0000 |
---|---|---|
committer | mattf <mattf@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-02-25 00:00:35 +0000 |
commit | 72cdf46f82b7db29922b67fdb7501bcbf44142aa (patch) | |
tree | 78e4e3ba0f2a1b3702ca30f99d1e232c2093a7f7 /channels | |
parent | 93df440b0adf0b32f954e6a807701e78a7639566 (diff) |
Adding support to log off an agent from the console
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5073 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rwxr-xr-x | channels/chan_agent.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/channels/chan_agent.c b/channels/chan_agent.c index 481485c28..8473b1337 100755 --- a/channels/chan_agent.c +++ b/channels/chan_agent.c @@ -1422,6 +1422,55 @@ static int agents_show(int fd, int argc, char **argv) return RESULT_SUCCESS; } +static int agent_logoff(int fd, int argc, char **argv) +{ + struct agent_pvt *p = NULL; + char *line = NULL; + int res = 0; + + /* Check args */ + if (argc != 3) + return RESULT_SHOWUSAGE; + + line = argv[2]; + + ast_mutex_lock(&agentlock); + p = agents; + while (p) { + ast_mutex_lock(&p->lock); + res = strcmp(p->agent, line); + + if (!res) { + /* Found him! Now we're going to kill him. */ + + if (ast_strlen_zero(p->loginchan)) { + ast_cli(fd, "Agent %s already logged off the system.\n", line); + ast_mutex_unlock(&p->lock); + break; + } + + strcpy(p->loginchan, ""); /* Bang! Killed him */ + ast_cli(fd, "Agent %s successfully logged off.\n", line); + ast_mutex_unlock(&p->lock); + break; + } + + ast_mutex_unlock(&p->lock); + p = p->next; + } + ast_mutex_unlock(&agentlock); + if (res) ast_cli(fd, "Unable to find agent %s.\n", line); + return RESULT_SUCCESS; +} + +static char agent_logoff_usage[] = +"Usage: agent logoff <agentnum>\n" +" Log an agent off the system that maybe forgot to log off, etc....\n"; + +static struct ast_cli_entry cli_agent_logoff = { + { "agent", "logoff", NULL }, agent_logoff, + "Log an agent off of the system", agent_logoff_usage, NULL}; + static char show_agents_usage[] = "Usage: show agents\n" " Provides summary information on agents.\n"; |