Murmur при помощи Ice

мануалы
Ответить
EviL
Команда Mumble.ru
Сообщения: 8
Зарегистрирован: 10 ноя 2009, 15:57
Поблагодарили: 2 раза

Murmur при помощи Ice

Сообщение EviL »

Я расскажу как при минимуме действий настроить свой сервер для работы с ICE и опишу самые простые примеры в работе.
И так, для начала определитесь, какую версию сервера вы хотите:
1.1.8 или 1.2.0~beta
Скажу заранее, что в данный момент 1.2.0 имеет массу изменений в ICE, и готовых веб приложений официально нет.
Но, вы можете легко заставить ваш старый скрипт работать, изменив функцию getPlayers на getUsers, в большинстве случаев. Но я, все же советую подождать финального релиза.

Независимо от того, какую версию сервера вы выбрали, поставить 1.1.8 вам придется, а затем мы его вручную обновим.
Я работаю с debian 5.0.3. Но в целом процесс сходный и для других ОС.
Заходим по ssh и пишем:

Код: Выделить всё

aptitude install mumble-server mumble-server-web
После установки, надо настроить сервер:

Код: Выделить всё

dpkg-reconfigure mumble-server
-включить автозагрузку
-мыло
-пароль суперюзера

И так, если вы ставили сервер из squeeze, у вас будет 1.1.8 версия

Код: Выделить всё

dpkg -l mumble-server
Собственно все, сервер у нас запущен и работает. Зачем же нам ICE?
Для управления сервером через веб приложения.

Вот самый простенький скрипт:

Код: Выделить всё

<?php 
// Really simple script to add users to your mumble server. 
// Make sure to select the server this script should be used for first: 
$serverId = 1; 

// Requires a correctly set up PHP-ICE Module and mumble server running with ICE. 
//  For instructions see https://wiki.mumble.info/wiki/ICE 

// Credits 
//  This script was created by Kissaki 
// Licence: http://creativecommons.org/licenses/by-nc/3.0/ 

// This is as simple as it can get. You really SHOULD NOT make the URL to this script all-public as it may be abused/spammed. 

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
<head> 
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 
  <title>Register a user to Mumble.</title> 
    <style type="text/css"> 
        .error { color:red; margin-bottom:20px; } 
    </style> 
</head> 
<body> 
<?php 

Ice_loadProfile(); 

if( isset($_GET['uname']) && $_GET['password'] && $_GET['email'] && $_GET['uname']!='' && $_GET['password']!='' ) 
{ 
  echo 'trying to register: <b>'.$_GET['uname'].'</b> ...<br/>'; 

  try { 
    $base = $ICE->stringToProxy("Meta:tcp -h 127.0.0.1 -p 6502"); 
    $meta = $base->ice_checkedCast("::Murmur::Meta"); 
         
    $server = $meta->getServer($serverId); 
         
        if(empty($server)){ 
            echo '<div class="error">A server with the specified ID could not be found.<br/><br/>If you\'re the server admin:<br/>lease check your setup and edit this script file and set the $serverId variable to the correct server id.</div>'; 
        }else{ 
            $registrationId = $server->registerPlayer($_GET['uname']); 
             
        $registration = $server->getRegistration(intval($registrationId)); 
        $registration->pw = $_GET['password']; 
        $registration->email = $_GET['email']; 
        $server->updateregistration($registration); 
         
        echo '<span style="color:green">done</span><br/><br/>'; 
        } 
         
    }catch(InvalidPlayerException $ex){ 
        // invalid account data: string for name or playerid 
        echo '<div class="error">There was a problem with the account data. Please go back and check your playername.<br/> If that doesn\'t help, please tell the server admin.</div>'; 
    }catch(ServerBootedException $ex){ 
    echo '<div class="error">The server is not running.<br/><br/>If you\'re the server admin:<br/>Check that it\'s running and using ICE.<br/>If you need help setting up ICE, see <a href="https://wiki.mumble.info/wiki/ICE">https://wiki.mumble.info/wiki/ICE</a></div>'; 
    }catch(Ice_UnknownLocalException $exc){ 
        echo '<div class="error">Please tell the server admin.<br/><br/>If you\'re the server admin:<br/>Check that ICE is running.</div>'; 
    }catch (Ice_Exception $ex){ 
    echo "<p>\n<pre>\n"; 
    print_r($ex); 
    echo "</pre>\n</p>\n"; 
  } 
} 

?> 
  <form action="" method="get"> 
    <table> 
      <tr><td>Username</td><td><input name="uname" type="text" value=""/></td></tr> 
      <tr><td>Password</td><td><input name="password" type="password" value=""/></td> 
      <tr><td>eMail</td><td><input name="email" type="text" value=""/></td></tr> 
    </table> 
    <input type="submit"/> 
  </form> 
</body> 
</html> 
Сохраните его как reg.php, и загрузите на сервер:
/usr/share/mumble-server-web/www
или
/var/www
Это относительно моей системы, у вас путь может немного отличаться.
Дальше, рестартнем апач, на всякий случай:

Код: Выделить всё

/etc/init.d/apache2 restart
И зайдем по адресу http://ваш_сервер/mumble/reg.php
или
http://ваш_сервер/reg.php если закинули его в /var/www

Вы окажитесь на простенькой страничке, где любой может зарегистрироваться у вас на сервере за 2 клика. Причем это не требует авторизации по мылу, и на мой взгляд удобно для быстрой регистрации.
Немного отступлюсь от главной темы, всем известно, что в 1.1.8 нет регистрации прямо внутри программы, как например в вентриле или 1.2.0бета. Но благодаря этому простенькому скрипту, вы можете создать некое подобие.
Например писать ссылку в пм, как аналог регистрации. Да, можно использовать стандартный register.cgi, но это как минимум требует настройки почтового сервера, да и авторизация через мыло удлиняет процесс. А если вы арендуете сервер на вдс, то не думаю что у вас будет желание тратить и так ограниченные ресурсы машины на smtp сервер и возиться с его настройкой.

Но вернемся к нашей теме, мы разобрали пример самого простого скрипта для регистрации пользователей.
И на этом все только начинается, если вы обладаете специальными знаниями, можете написать свой скрипт, в своем дизайне. Документация есть на сайте мамблы.
Я не буду рассказывать как написать свое приложение, возьмем уже готовое решение:
primer.zip
(289.44 КБ) 1777 скачиваний
Это Mumble_PHP_Interface, он есть на сайте мамблы.
Процесс такойже, закачали на сервер, распаковали, установили

Код: Выделить всё

chmod -R 0777 
на папки primer,tmp, data.

Дальше запускаем рестартуем апач(на всякий случай)

Код: Выделить всё

/etc/init.d/apache2 restart
Идем по адресу:
http://ваш_сервер/primer/ или http://ваш_сервер/mumble/primer/
Тут мы видем уже более продвинутое приложение, где можно управлять самим сервером, удалять пользователей, регистрироваться, менять свои данные, загружать аватары, есть капча.
http://ваш_сервер/mumble/primer/admin - вход в админку, где можно поменять настройки, включить или откл. капчу, мыло, название сервера, создать новый сервер и тд.

Хочу заметить, что устанавливая cервер мамблы таким образом, ICE будет настроен автоматически, это можно проверить:

Код: Выделить всё

/etc/init.d/apache2 restart
tail -n10 /var/log/mumble-server/mumble-server.log
Если увидите <W>2009-04-06 13:37:11.316 MurmurIce: Endpoint "tcp -h 127.0.0.1 -p 6502" running, значит все отлично.


Но что делать если хотите 1.2.0?
Обновимся вручную:
Останавливаем сервак мумблы

Код: Выделить всё

/etc/init.d/mumble-server stop

Код: Выделить всё

wget http://switch.dl.sourceforge.net/sourceforge/mumble/murmur-static_x86-1.2.0~beta1.tar.lzma
unlzma -v murmur-static_x86-1.2.0~beta1.tar.lzma
tar xfv murmur-static_x86-1.2.0~beta1.tar

Код: Выделить всё

cd ~/murmur-static_x86-1.2.0~beta1
chmod +x ./murmur.x86
cp murmur.x86 /usr/sbin/murmurd 

Код: Выделить всё

cp Murmur.ice /var/lib/mumble-server/Murmur.ice
nano -w /etc/php5/conf.d/IcePHP.ini
добваить в конец с новой строчки ice.slice = /var/lib/mumble-server/Murmur.ice
/etc/init.d/apache2 restart
/etc/init.d/mumble-server start
tail -n10 /var/log/mumble-server/mumble-server.log
Должны увидеть <W>2009-04-06 13:37:11.316 MurmurIce: Endpoint "tcp -h 127.0.0.1 -p 6502" running
Вот и все.

B0nuse
Site Admin
Сообщения: 1588
Зарегистрирован: 27 июл 2009, 08:58
Благодарил (а): 40 раз
Поблагодарили: 363 раза
Контактная информация:

Re: Murmur при помощи Ice

Сообщение B0nuse »

Данная статья подойдет только для тех, кто имеет права рута на сервере.
Думаю, нужно описать - есть ли возможность установить Ice и связать его с апачем отдельно? Например, при использовании уже скомпиленной версии Мурмур...
Потому что у многих на функцию пхп

Код: Выделить всё

Ice_loadProfile();
Апач будет ругаться, что не понимает значения этой функции...
Скрытый текст. Вы не состоите в группах, которым доступен этот текст
Мы в Telegramm https://t.me/mumbleru
Пожалуйста, при персональном обращении сразу формулируйте его цель. Спасибо.
Подпишитесь на Новости форума feed/news :rtfm:

Изображение <--- Хочешь себе такой? Читай тут

EviL
Команда Mumble.ru
Сообщения: 8
Зарегистрирован: 10 ноя 2009, 15:57
Поблагодарили: 2 раза

Re: Murmur при помощи Ice

Сообщение EviL »

Есть такая штука, как альтернативный сервер murmur, называется Mumble-Django. Он полностью заменяет работу обычного mumble-server-web и имеет ряд функционала. Работает как с ICE так и с DBus.

WSGI config или lighttpd.
Т.е мы можем например сконфигурировать работу Mumble-Django, используя связку апач + WSGI. Кстати, как мне кажется это довольно распространенный способ. Получается, есть возможность установить Mumble-Django и связать его с апачем отдельно при помощи WSGI или с использованием lighttpd.

Для скомпилированной версии, попробую написать чуть позже.

ArhipS
Сообщения: 3
Зарегистрирован: 22 ноя 2009, 23:46

Re: Murmur при помощи Ice

Сообщение ArhipS »

B0nuse писал(а):Данная статья подойдет только для тех, кто имеет права рута на сервере.
Думаю, нужно описать - есть ли возможность установить Ice и связать его с апачем отдельно? Например, при использовании уже скомпиленной версии Мурмур...
Потому что у многих на функцию пхп

Код: Выделить всё

Ice_loadProfile();
Апач будет ругаться, что не понимает значения этой функции...
Скрытое содержимое
именно это и происходит у меня, root доступ есть, подскажите что делать

ArhipS
Сообщения: 3
Зарегистрирован: 22 ноя 2009, 23:46

Re: Murmur при помощи Ice

Сообщение ArhipS »

решил вопрос:

Код: Выделить всё

apt-get install icecpp libzeroc-ice32 php-zeroc-ice lzma
но появилась новая проблема, после отправки запроса:

Код: Выделить всё

trying to register: ArhipS ...

Fatal error: Ice_ObjectPrx::ice_checkedCast() [<a href='ice-objectprx.ice-checkedcast'>ice-objectprx.ice-checkedcast</a>]: no Slice definition found for type ::Murmur::Meta in /var/www/mumble/reg/reg.php on line 36

De29v101L
Сообщения: 2
Зарегистрирован: 03 дек 2009, 05:28
Благодарил (а): 1 раз

Re: Murmur при помощи Ice

Сообщение De29v101L »

тоже самое после запроса, жду решения проблемы

B0nuse
Site Admin
Сообщения: 1588
Зарегистрирован: 27 июл 2009, 08:58
Благодарил (а): 40 раз
Поблагодарили: 363 раза
Контактная информация:

Re: Murmur при помощи Ice

Сообщение B0nuse »

Читаем статью https://wiki.mumble.info/wiki/Ice
и выполняем все четко по шагам
Наряду с расширением PHP в php.ini, вы должны указать ice.slice пути, т.е. путь к Murmur.ice (или для этого всего есть файлик IcePHP.ini). Таким образом, нужно сростить пхп и айс.
Не забывайте, что должны также быть изменены настройки в файле конфигурации murmur.ini с DBus на Ice до запуска Ice скриптов.
Мы в Telegramm https://t.me/mumbleru
Пожалуйста, при персональном обращении сразу формулируйте его цель. Спасибо.
Подпишитесь на Новости форума feed/news :rtfm:

Изображение <--- Хочешь себе такой? Читай тут

staf94
Сообщения: 1
Зарегистрирован: 22 фев 2010, 23:17

Re: Murmur при помощи Ice

Сообщение staf94 »

Спасибо очень помогли

PMSNSK
Сообщения: 6
Зарегистрирован: 21 фев 2010, 10:57

Re: Murmur при помощи Ice

Сообщение PMSNSK »

Не удается сростить пхп и айс. Всё сделал по статье https://wiki.mumble.info/wiki/Ice, только директории правил под свои, и все тот же Ice_loadProfile();
Хотелось бы уточнить правильно ли я понимаю
Наряду с расширением PHP в php.ini, вы должны указать ice.slice пути
значит
открыть C:\PHP5\php.ini и добавить в конец файла:
extension=php_ice.dll
ice.slice=C:\PHP5\Murmur.ice
потом сохранить php.ini.
или нужно сделать что то еще?

johnyx
Сообщения: 5
Зарегистрирован: 19 авг 2011, 09:44

Re: Murmur при помощи Ice

Сообщение johnyx »

добавлю для ubuntu 14.04 и предидущих файлы в которых пути нужны /etc/php5/mods-available/icePHP.ini добавить это extension=IcePHP.so и в /etc/php5/mods-available/MurmurPHP.ini если нет создать и добавить туда ice.slice= -I/usr/share/Ice-3.5.1/slice /usr/share/slice/Murmur.ice

Ответить