view data/plugin/action/ @ 614:81cb72cfddac

bbb: don't crash because of wrong salt
author Reimar Bauer <rb.proj AT googlemail DOT com>
date Wed, 15 Aug 2012 13:36:59 +0200
parents 8c908e614131
children 6d10150ff905
line wrap: on
line source
# -*- coding: utf-8 -*-
    MoinMoin - Starts Meeting for bigbluebutton

    @copyright: 2012 MoinMoin:ReimarBauer
    @license: GNU GPL, see COPYING for details.
import urllib
from MoinMoin.Page import Page
# pip install bigbluebutton
    from bigbluebutton import Meeting_Setup
except ImportError:
    Meeting_Setup = None
    import bbb_settings
except ImportError:
    bbb_settings = None

def execute(pagename, request):
    Lets a Moderator of a meeting start this.
    It requires a bbb_admin_group defined in
    Only a user of this group is allowed to use this action. 
    On same directory as you need
    a "" module with the SALT and the BBB_API_URL.
    if Meeting_Setup is None or bbb_settings is None:
        msg, state = ("bigbluebutton module not installed or bbb_settings missing!", "error")
        request.theme.add_msg(msg, state)
        Page(request, pagename).send_page()

    _ = request.getText
    username =
    groups = request.groups
    msg, state = ("Sorry you have not enough priviledges!", "error")
        bbb_admin_group = groups.get(request.cfg.bbb_admin_group, [])
    except AttributeError:
        request.theme.add_msg(msg, state)
        Page(request, pagename).send_page()

    if request.user.valid and username in bbb_admin_group:
        if request.args and request.args["action"] == u'submit_bbb_start_meeting':
            content = request.dicts.get(pagename, {})
            msg, state = ("You have not this priviledge to start this meeting!", "error")
            responsible = content["responsible"]
            if != responsible:
                request.theme.add_msg(msg, state)
                Page(request, pagename).send_page()

            attendee_password = content["attendee_password"]
            moderator_password = content["moderator_password"]
            msg, state = ("Sorry, we don't support empty passwords!", "error")
            if not attendee_password.strip() or not moderator_password.strip():
                request.theme.add_msg(msg, state)
                Page(request, pagename).send_page()

            meeting_id = content["meeting_id"]
            meeting_name = content["meeting_name"]
            recreate = True
            scriptname = request.script_root
            if scriptname:
                scriptname = scriptname.lstrip('/') + '/'
            url = "%s%s%s" % (request.host_url, scriptname, pagename.lstrip('/'))
            msg, state = ("Meeting started ", "info")
                session = Meeting_Setup(bbb_api_url=bbb_settings.BBB_API_URL, salt=bbb_settings.SALT,
                                    meeting_name=meeting_name, meeting_id=meeting_id,
                except TypeError:
                    recreate = False
                    msg, state = ("Usually the meeting is running and you tried to change some important parameters. Stop the Meeting beforehand.", "error")
                # XXX there is an AttributeError if the SALT is wrong.
                # catching the AttributeError seems no solution for a correct SALT.

            except KeyError:
                msg, state = ("Usually not the right parameters or syntax used! Check the page content.  ", "error")
                recreate = False

        request.theme.add_msg(msg, state)
        Page(request, pagename).send_page()