diff options
-rwxr-xr-x | apps/app_meetme.c | 28 | ||||
-rwxr-xr-x | sounds.txt | 2 | ||||
-rwxr-xr-x | sounds/conf-adminmenu.gsm | bin | 11187 -> 15642 bytes |
3 files changed, 26 insertions, 4 deletions
diff --git a/apps/app_meetme.c b/apps/app_meetme.c index b4eec3038..887ac4ce1 100755 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -91,6 +91,7 @@ static char *descrip3 = " MeetMeAdmin(confno,command[,user]): Run admin command for conference\n" " 'K' -- Kick all users out of conference\n" " 'k' -- Kick one user out of conference\n" +" 'e' -- Eject last user that joined\n" " 'L' -- Lock conference\n" " 'l' -- Unlock conference\n" " 'M' -- Mute conference\n" @@ -500,6 +501,7 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c { struct ast_conference *prev=NULL, *cur; struct ast_conf_user *user = malloc(sizeof(struct ast_conf_user)); + struct ast_conf_user *usr = NULL; int fd; struct zt_confinfo ztc; struct ast_frame *f; @@ -873,9 +875,9 @@ zapretry: if (!menu_active) { menu_active = 1; /* Record this sound! */ - if (!ast_streamfile(chan, "conf-adminmenu", chan->language)) + if (!ast_streamfile(chan, "conf-adminmenu", chan->language)) dtmf = ast_waitstream(chan, AST_DIGIT_ANY); - else + else dtmf = 0; } else dtmf = f->subclass; @@ -915,6 +917,16 @@ zapretry: ast_waitstream(chan, ""); } break; + case '6': /* Eject last user */ + menu_active = 0; + usr = conf->lastuser; + if ((usr->chan->name == chan->name)||(usr->userflags & CONFFLAG_ADMIN)) { + if(!ast_streamfile(chan, "conf-errormenu", chan->language)) + ast_waitstream(chan, ""); + } else + usr->adminflags |= ADMINFLAG_KICKME; + ast_stopstream(chan); + break; default: menu_active = 0; /* Play an error message! */ @@ -1538,11 +1550,21 @@ static int admin_exec(struct ast_channel *chan, void *data) { } } break; + case 101: /* e: Eject last user*/ + user = cnf->lastuser; + if (!(user->userflags & CONFFLAG_ADMIN)) { + user->adminflags |= ADMINFLAG_KICKME; + break; + } else + ast_log(LOG_NOTICE, "Not kicking last user, is an Admin!\n"); + } + break; + case 77: /* M: Mute */ if (user) { user->adminflags |= ADMINFLAG_MUTED; } else { - ast_log(LOG_NOTICE, "Specified User not found!"); + ast_log(LOG_NOTICE, "Specified User not found!\n"); } break; case 78: /* N: Mute all users */ diff --git a/sounds.txt b/sounds.txt index 7f7374214..5c5c1ea05 100755 --- a/sounds.txt +++ b/sounds.txt @@ -647,7 +647,7 @@ %conf-kicked.gsm%You have been kicked from this conference -%conf-adminmenu.gsm%Please press 1 to mute or unmute yourself, or press 2 to lock or unlock the conference +%conf-adminmenu.gsm%Please press 1 to mute or unmute yourself, or press 2 to lock or unlock the conference, or press 6 to kick the last user %conf-usermenu.gsm%Please press 1 to mute or unmute yourself diff --git a/sounds/conf-adminmenu.gsm b/sounds/conf-adminmenu.gsm Binary files differindex ba5301717..3222995b5 100755 --- a/sounds/conf-adminmenu.gsm +++ b/sounds/conf-adminmenu.gsm |