Создание главной страницы авторизации (landing page) BigBlueButton 2.0b

habr.png

Здравствуйте, в этой статье я вкратце расскажу, как создать главную страницу с авторизацией для сервера видеоконференций BigBlueButton версии 2.0b.

Установка самого сервера не должна вызвать каких-либо серьезных проблем и осуществляется она по инструкции с официального сайта.

Обязательно установите набор демо-страничек — из них мы будем создавать главную страницу сайта.

После установки демо — они появятся на вашем сервере по пути /var/lib/tomcat7/webapps/demo
Среди них есть файл demo3.jsp — именно он подходит для изменения, так как в нем реализован функционал авторизации пользователя по паролю, при чем пароль присвоен не пользователю, а видеоконференции.

Для того, чтобы было удобно работать со стартовой страницей мы решили разместить ее в отдельной папке в корне сервера — назвали ее site.
По умолчанию корневая директория BBB — /var/www/bigbluebutton-default/.
Это указано в конфигурационном файле веб-сервера nginx/etc/nginx/sites-enabled/bigbluebutton.

В директории /var/www/bigbluebutton-default/ есть файл index.html, просмотрев его мы увидим такой код:



Из него следует, что для создания конференции используется файл /demo/demo1.jsp, которому передаются параметры имя конференции и имя пользователя.

В папке site создадим две папки — bbb и webapps.
Папку bbb будем использовать для начальной страницы, картинок, иконок и служебных файлов батона — попросу скопируем в нее содержимое папки — /var/www/bigbluebutton-default/
Далее скопируем в папку webapps из каталога /var/lib/tomcat7/webapps/demo следующие файлы и папки:

  1. Папки META-INF и WEB-INF
  2. demo3.jsp
  3. bbb_api.jsp, bbb_api_conf.jsp, bbb_jopenid.jsp, error.jsp


Отредактируем файл /site/bbb/index.html следующим образом:






В результате получим, что он будет ссылаться на index.jsp — это файл который и будет стартовой страницей нашего батона — это отредактированный demo3.jsp или же любой другой решать вам.

Приведу пример нашего файла index.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%
	request.setCharacterEncoding("UTF-8");
	response.setCharacterEncoding("UTF-8");
%>


Сервер видеоконференций xxxxxxxxx



<%@ include file="bbb_api.jsp"%> <% // ------------------------------------------------------------------------------- // HashMap allMeetings = new HashMap(); HashMap meeting; String welcome = "
Вы участвуете в видеоконференции %%CONFNAME%%!

Наш официальный сайт www.xxxxxxxxx.ru .

Для того, чтобы отключить Ваш микрофон, нажмите на пиктограмму микрофона в левом верхнем углу экрана."; meeting = new HashMap(); allMeetings.put("Refghgfh", meeting); meeting.put("welcomeMsg", welcome); meeting.put("moderatorPW", "0000"); meeting.put("viewerPW", "0000"); meeting.put("voiceBridge", "72013"); meeting.put("logoutURL", "/index.jsp"); meeting = new HashMap(); allMeetings.put("Conference", meeting); meeting.put("welcomeMsg", welcome); meeting.put("moderatorPW", "0000"); meeting.put("viewerPW", "0000"); meeting.put("voiceBridge", "72213"); meeting.put("logoutURL", "/index.jsp"); meeting = null; Iterator meetingIterator = new TreeSet(allMeetings.keySet()).iterator(); // ------------------------------------------------------------------------------- // if (request.getParameterMap().isEmpty()) { // ------------------------------------------------------------------------------- // %>

Зарегистрируйтесь и выберите конференцию для участия

Организация_Фамилия Имя:
Пароль:
Конференция:
         
1999—2014 xxxxxxxxx
<% // ------------------------------------------------------------------------------- // } else if (request.getParameter("action").equals("create")) { // ------------------------------------------------------------------------------- // String username = request.getParameter("username"); String meetingID = request.getParameter("meetingID"); String password = request.getParameter("password"); String record = request.getParameter("record"); meeting = allMeetings.get( meetingID ); String welcomeMsg = meeting.get( "welcomeMsg" ); String logoutURL = meeting.get( "logoutURL" ); Integer voiceBridge = Integer.parseInt( meeting.get( "voiceBridge" ).trim() ); String viewerPW = meeting.get( "viewerPW" ); String moderatorPW = meeting.get( "moderatorPW" ); // Check if we have a valid password if ( ! password.equals(viewerPW) && ! password.equals(moderatorPW) ) { %>
Ошибка ввода пароля! Пожалуйста, попробуйте еще раз.
<% return; } // Looks good, let's create the meeting String meeting_ID = createMeeting( meetingID, welcomeMsg, moderatorPW, "OK", viewerPW, voiceBridge, logoutURL, record ); // Check if we have an error. if( meeting_ID.startsWith("Error ") ) { %>
Error: createMeeting() failed
<%=meeting_ID%>
<% return; } String joinURL = getJoinMeetingURL(username, meeting_ID, password, null); %><% // ------------------------------------------------------------------------------- // } // ------------------------------------------------------------------------------- // %>


В следующей строке данного файла:

String meeting_ID = createMeeting( meetingID, welcomeMsg, moderatorPW, "OK", viewerPW, voiceBridge, logoutURL, record );


мы передаем параметры видеоконференции и от стандартной строки из demo3.jsp она отличается параметром record. Он необходим, чтобы у вас заработала возможность записи видеоконференции.

так как, наш index.jsp использует bbb_api.jsp придется отредактировать и его.

Для этого отредактировать строку:

public String createMeeting(String meetingID, String welcome, String moderatorPassword, String moderatorWelcomeMsg, String viewerPassword, Integer voiceBridge, String logoutURL, String record)


добавив в нее String record

Еще нужно отредактировать следующую секцию этого фала таким образом:

String create_parameters = "name=" + urlEncode(meetingID)
		+ "&meetingID=" + urlEncode(meetingID) + welcome_param
		+ attendee_password_param + moderator_password_param
		+ moderatorWelcomeMsg_param + voice_bridge_param + logoutURL_param;
if (record.equals("on")) {
      Map metadata=new HashMap();
      metadata.put("title", meetingID);
      create_parameters += "&record=true" + getMetaData( metadata );
       }


Здесь добавлена конструкция if.

Сами файлы я прикреплю к данной статье, сможете сравнить исходники с ними.
Также для просмотра созданных видеозаписей создали файл records.jsp, его также сможете скачать.

Теперь необходимо подправить конфиги nginx для того, чтобы все корректно заработало.
В конфигурационном файле nginx/etc/nginx/sites-enabled/bigbluebutton закомментируем секцию BigBluebutton landing page и создадим в директории /etc/bigbluebutton/nginx конфигурационный файл bbb.nginx следующего содержания:

   location / {
           root /site/bbb;
           index index.html index.htm index.jsp;
#           expires 1s;
       }

       location ~ \.jsp$ {
           proxy_pass         http://127.0.0.1:8080;
           proxy_redirect     default;
           proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;

        # Allow 30M uploaded presentation document.
           client_max_body_size       30m;
           client_body_buffer_size    128k;

           proxy_connect_timeout      90;
           proxy_send_timeout         90;
           proxy_read_timeout         90;

           proxy_buffer_size          4k;
           proxy_buffers              4 32k;
           proxy_busy_buffers_size    64k;
           proxy_temp_file_write_size 64k;

           include    fastcgi_params;
       }


Здесь мы прописали нашу корневую директорию /site/bbb

Теперь необходимо дать права пользователю www-data на директорию site следующей командой
chowm -r www-data /site

Кроме этого необходимо чтобы tomcat обнаружил корневую директорию, для этого поступим следующем образом — переименуем корневую директорию tomcat, которая находится по адресу /var/lib/tomcat7/webapps/ROOT
cd /var/lib/tomcat7/webapps
mv ROOT _ROOT

И создадим символическую с именем ROOT на нашу папку /site/webapps:
ln -s /site/webapps /var/lib/tomcat7/webapps/ROOT
Теперь можно перезагрузить сервер и заходить по адресу your_ip_or_host.
Еще советую удалить демки с вашего сервера — apt-get purge bbb-demo

Вот ссылка на файлы https://yadi.sk/d/GVJUPJUp3RY7un

© Habrahabr.ru