summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xapps/app_meetme.c28
-rwxr-xr-xsounds.txt2
-rwxr-xr-xsounds/conf-adminmenu.gsmbin11187 -> 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
index ba5301717..3222995b5 100755
--- a/sounds/conf-adminmenu.gsm
+++ b/sounds/conf-adminmenu.gsm
Binary files differ