[asterisk-commits] dvossel: branch dvossel/hd_confbridge r310411 - in /team/dvossel/hd_confbridg...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Mar 11 16:06:41 CST 2011
Author: dvossel
Date: Fri Mar 11 16:06:37 2011
New Revision: 310411
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=310411
Log:
Addition of admin lock and kick menu options
Modified:
team/dvossel/hd_confbridge/apps/app_confbridge.c
team/dvossel/hd_confbridge/apps/confbridge/conf_config_parser.c
team/dvossel/hd_confbridge/apps/confbridge/include/confbridge.h
team/dvossel/hd_confbridge/configs/confbridge.conf.sample
Modified: team/dvossel/hd_confbridge/apps/app_confbridge.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/apps/app_confbridge.c?view=diff&rev=310411&r1=310410&r2=310411
==============================================================================
--- team/dvossel/hd_confbridge/apps/app_confbridge.c (original)
+++ team/dvossel/hd_confbridge/apps/app_confbridge.c Fri Mar 11 16:06:37 2011
@@ -802,6 +802,8 @@
struct conf_menu *menu)
{
struct conf_menu_action *menu_action;
+ struct conference_bridge_user *last_participant = NULL;
+ int isadmin = ast_test_flag(&conference_bridge_user->u_profile, USER_OPT_ADMIN);
int res = 0;
AST_LIST_TRAVERSE(&menu_entry->actions, menu_action, action) {
@@ -840,6 +842,29 @@
break;
case MENU_ACTION_DIALPLAN_EXEC:
res |= action_dialplan_exec(bridge_channel, menu_action);
+ break;
+ case MENU_ACTION_ADMIN_TOGGLE_LOCK:
+ if (!isadmin) {
+ break;
+ }
+ conference_bridge->locked = (!conference_bridge->locked ? 1 : 0);
+ res |= ast_stream_and_wait(bridge_channel->chan,
+ (conference_bridge->locked ? "conf-lockednow" : "conf-unlockednow"), "");
+ break;
+ case MENU_ACTION_ADMIN_KICK_LAST:
+ if (!isadmin) {
+ break;
+ }
+ ao2_lock(conference_bridge);
+ if (((last_participant = AST_LIST_LAST(&conference_bridge->users_list)) == conference_bridge_user)
+ || (ast_test_flag(&last_participant->u_profile, USER_OPT_ADMIN))) {
+ ao2_unlock(conference_bridge);
+ res = ast_stream_and_wait(bridge_channel->chan, "conf-errormenu", "");
+ } else if (last_participant) {
+ last_participant->kicked = 1;
+ ast_bridge_remove(conference_bridge->bridge, last_participant->chan);
+ ao2_unlock(conference_bridge);
+ }
break;
}
}
Modified: team/dvossel/hd_confbridge/apps/confbridge/conf_config_parser.c
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/apps/confbridge/conf_config_parser.c?view=diff&rev=310411&r1=310410&r2=310411
==============================================================================
--- team/dvossel/hd_confbridge/apps/confbridge/conf_config_parser.c (original)
+++ team/dvossel/hd_confbridge/apps/confbridge/conf_config_parser.c Fri Mar 11 16:06:37 2011
@@ -249,6 +249,8 @@
case MENU_ACTION_DECREASE_LISTENING:
case MENU_ACTION_INCREASE_TALKING:
case MENU_ACTION_DECREASE_TALKING:
+ case MENU_ACTION_ADMIN_TOGGLE_LOCK:
+ case MENU_ACTION_ADMIN_KICK_LAST:
break;
case MENU_ACTION_PLAYBACK:
case MENU_ACTION_PLAYBACK_AND_CONTINUE:
@@ -317,6 +319,10 @@
res |= add_action_to_menu_entry(menu_entry, MENU_ACTION_INCREASE_TALKING, NULL);
} else if (!strcasecmp(action, "decrease_talking_volume")) {
res |= add_action_to_menu_entry(menu_entry, MENU_ACTION_DECREASE_TALKING, NULL);
+ } else if (!strcasecmp(action, "admin_toggle_conference_lock")) {
+ res |= add_action_to_menu_entry(menu_entry, MENU_ACTION_ADMIN_TOGGLE_LOCK, NULL);
+ } else if (!strcasecmp(action, "admin_kick_last")) {
+ res |= add_action_to_menu_entry(menu_entry, MENU_ACTION_ADMIN_KICK_LAST, NULL);
} else if (!strncasecmp(action, "dialplan_exec", 13)) {
action_args = ast_strdupa(action);
if ((action_args = strchr(action, '(')) && (tmp = strrchr(action_args, ')'))) {
@@ -616,6 +622,12 @@
menu_action->data.dialplan_args.exten,
menu_action->data.dialplan_args.priority);
break;
+ case MENU_ACTION_ADMIN_TOGGLE_LOCK:
+ ast_cli(a->fd, "admin_toggle_conference_lock");
+ break;
+ case MENU_ACTION_ADMIN_KICK_LAST:
+ ast_cli(a->fd, "admin_kick_last");
+ break;
}
action_num++;
}
Modified: team/dvossel/hd_confbridge/apps/confbridge/include/confbridge.h
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/apps/confbridge/include/confbridge.h?view=diff&rev=310411&r1=310410&r2=310411
==============================================================================
--- team/dvossel/hd_confbridge/apps/confbridge/include/confbridge.h (original)
+++ team/dvossel/hd_confbridge/apps/confbridge/include/confbridge.h Fri Mar 11 16:06:37 2011
@@ -50,6 +50,8 @@
MENU_ACTION_INCREASE_TALKING,
MENU_ACTION_DECREASE_TALKING,
MENU_ACTION_DIALPLAN_EXEC,
+ MENU_ACTION_ADMIN_TOGGLE_LOCK,
+ MENU_ACTION_ADMIN_KICK_LAST,
};
/*! The conference menu action contains both
Modified: team/dvossel/hd_confbridge/configs/confbridge.conf.sample
URL: http://svnview.digium.com/svn/asterisk/team/dvossel/hd_confbridge/configs/confbridge.conf.sample?view=diff&rev=310411&r1=310410&r2=310411
==============================================================================
--- team/dvossel/hd_confbridge/configs/confbridge.conf.sample (original)
+++ team/dvossel/hd_confbridge/configs/confbridge.conf.sample Fri Mar 11 16:06:37 2011
@@ -67,10 +67,21 @@
; commands in the dialplan. Once the dialplan
; exits the user will be put back into the
; conference. The possibilities are endless!
+;
+; admin_kick_last ; This action allows an Admin to kick the last participant from the
+ ; conference. This action will only work for admins which allows
+ ; a single menu to be used for both users and admins.
+;
+; admin_toggle_conference_lock ; This action allows an Admin to toggle locking and
+ ; unlocking the conference. Non admins can not use
+ ; this action even if it is in their menu.
+
[sample_user_menu]
type=menu
*=playback_and_continue(conf-usermenu)
*1=toggle_mute
+*2=admin_toggle_conference_lock ; only applied to admin users
+*3=admin_kick_last ; only applied to admin users
*4=decrease_listening_volume
*6=increase_listening_volume
*7=decrease_talking_volume
More information about the asterisk-commits
mailing list