- Главная... arrow - Статьи... arrow | - BSD arrow FreeBSD Jabberd2 Server Часть 2

#Записки о Unix/Linux/BSD/Solaris

FreeBSD Jabberd2 Server Часть 2
Автор Охальников Олег   
16:09:2009 г.

Не прошло и пары недель с момента поднятия сервера Jabber2 и описания этого процесса в статье "FreeBSD Jabberd2" , как стало ясно, что дефолтного функционала недостаточно.

Организация, в которой был поставлен jabber для связи удаленных офисов и магазинов распологает не очень квалифицированными пользователями, по части информационных технологий. Поэтому на меня легла нагрузка не только по настройке серверной части, но и клиентской. Необходимо установить около 30 jabber клиентов в разных частях города. Что получается, надо поставить клиента, завести аккаунд и вручную на память или по списку ввести все существующие аккаунды с сервера. После этого на те клиенты, которые уже на сервере добавлены, добавить в ростер новый контакт, вобщем долго, утомительно и неэффективно. Поэтому возникли следующие идеи:

1 >> подгружать всех пользователей зарегистрированных на сервере в ростер нового клиента автоматически
2 >> организовать поиск зарегистрированных пользователей (по умолчанию его нет)

Начну с описания возможности ведения общего ростера на сервере jabberd2, правильнее эта возможность называется "ведение шаблонных списков пользователей". После регистрации каждый пользователь заносится администратором в специальный файл roster.xml, который находится в директории "templates" папки со всеми конфигами сервера  (/usr/local/etc/jabberd). Но прежде чем начать редактировать файл, надо в sm.xml внести следующие правки:

    <template>

      <publish>

        <!--
        <check-remove-domain>santexnika.org.ru</check-remove-domain>
        <check-remove-domain>santexnika.org.ru</check-remove-domain>
        -->
        <!-- Keep cache of "active" database specified number of seconds.
             This will significantly speed up publishing of roster.
             If unspecified or 0, no cache is used. -->
        <active-cache-ttl>60</active-cache-ttl>
        <!-- If <fix-subscriptions/> is not commented, set subscriptions of
             user's contacts to subscriptions of corresponding published
             contacts. As for now, "both". -->
        <!--
        <fix-subscriptions/>
        -->
        <!-- If <override-names/> is not commented, then displayed names of
             contacts in user's roster will be updated accordingly to
             published roster (if they differ). If commented, then user can
             rename contacs in roster -->
        <!--
        <override-names/>
        -->
        <!--
        <mapped-groups/>
          <map-groups/>
          <group-cache-ttl>120</group-cache-ttl>
        </mapped-groups>
        -->

      </publish>


      <!-- If you defined publish, you should comment <roster> -->

      <roster>/usr/local/etc/jabberd/templates/roster.xml</roster>

    </template>


Теперь добавляем пользователей в файл roster.xml:

<query xmlns='jabber:iq:roster'>
  <item name='User1' jid=' Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script ' subscription='none'><group>Support</group></item>
  <!--Rukovodstvo-->
  <item name='User2' jid=' Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script ' subscription='none'><group>Rukovodstvo</group></item>
  <item name='User3' jid=' Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script ' subscription='none'><group>Rukovodstvo</group></item>
</query>


Секции добавляются для каждого пользователя. Перезапускаем сервер, потому как был изменен файл sm и roster:

# /usr/local/etc/rc.d/jabberd restart


Теперь при регистрации нового пользователя, в его ростере автоматически появится пользователь User1 в группе Support и два пользователя User2 и User3 в группе Rukovodstvo.
Что такое subscription='none' - это означает, что у пользователей при добавлении не будет запрашиваться авторизация. Если необходимо добавлять пользователей с запросом авторизации, то меняем этот параметр на subscription='both' (у меня этот режим не работал как надо, т.е. при запросе выдает "Отказано в авторизации").

Переходим ко второму пункту, а именно, организация поиска пользователей на сервере. Для этого нам понадобится jabber-users-agent.

Ищем необходимый порт и устанавливаем:

/usr/ports/net-im/jabber-users-agent
#make install clean


После установки в директории /usr/local/lib/jabber/users-agent появятся два перловый скрипта, один для создания базы, другой для запуска jabber-users-agent. С созданием базы из перлового скрипта есть проблемы, надо доставлять перловые модули и прочее, поэтому проще создать файл DBCreateJUD.sql и заполнить его следующим содержимым:

   CREATE DATABASE JUD;
   GRANT ALL PRIVILEGES ON JUD.* to jud@localhost IDENTIFIED BY 'jud';
   CREATE TABLE JUD.jud (jid VARCHAR(100) PRIMARY KEY, name VARCHAR(100),
                       first VARCHAR(50), last VARCHAR(50),nick VARCHAR(50),
                       email VARCHAR(50), INDEX ind_name (name), INDEX ind_first (first),
                       INDEX ind_last (last), INDEX ind_nick (nick),
                       INDEX ind_email (email));


Создаем базу из только что созданного файла:

#mysql  -u root -p < DBCreateJUD.sql


Все готово, переходим к редактированию конфига jabber-users-agent

#ee /usr/local/etc/jabber-users-agent.xml


Правим:

<secret>foobar</secret>


foobar меняем на то, что прописано в router.xml в этом же поле.
Дальше меняем параметры подключения к базе Мускул:

<mysql>
    <dbname>JUD</dbname>
    <host>localhost</host>
    <port>3306</port>
    <username>root</username>
    <password>пасс</password>
    <limit>250</limit>
</mysql>


Меняем права на этот файл 660, и юзер группа jabber.
После этого можно стартовать jabber-users-agent, для этого запускаем скрипт users-agent из /usr/local/lib/jabber/users-agent:

./users-agent


Чтобы процесс был запущен в фоне:

./users-agent &


Проверяем что агент запущен и работает:

ps -waux | grep user
root       91454 17.3  0.8 13268 10820  p0  S    11:54AM   0:01.19 /usr/local/bin/perl ./users-agent


Если что то пошло не так и как надо не работает, в users-agent скрипте можно задействовать режим отладки выставив следующий параметр в единицу:

$optctl{debug} = 1;


Теперь после запуска user-agent в консоль будут выводится отладочные сообщения:

# ./users-agent
XML::Stream: new: hostname = (host.org.ru)
XML::Stream: SetCallBacks: tag(node) func(CODE(0x8830328))
XMPP::Conn: xmppCallbackInit: start
XMPP::Conn: SetCallBacks: tag(message) func(CODE(0x883013c))
XMPP::Conn: SetCallBacks: tag(presence) func(CODE(0x883019c))
XMPP::Conn: SetCallBacks: tag(iq) func(CODE(0x88301fc))
XMPP::Conn: SetPresenceCallBacks: type(subscribe) func(CODE(0x88301a8))
и т.д.


Следующий шаг, это установка jabber клиента и регистрация пользователя на сервере, делаем на примере Psi. Думаю с регистрацией проблем не возникнет, поэтому регистрируем и авторизуемся на сервере, далее для этого пользователя переходим в "Сервисы" в них должен появится User-Agent:

 

 

 

 

 

 

 

 

 

 

 

 

 

Наводим курсор на User-Agent, нажимаем правую кнопку мыши и в контекстном меню выбираем "Зарегистрироваться". В открывшейся форме вводим данные для нового пользователя, они будут участвовать в поиске.

jabber2.jpg

jabber3.jpg

На последнем скриншоте в поле "Last" я поставил звёздочку. Если делать так для каждого пользователя, то в дальнейшем не нужно вспоминать кого надо найти, просто вводим в поле Last "*" и в окне поиска появляются все пользователи, которых и добавляем в свой список контактов.
jabber4.jpg


















jabber5.jpg


















 

Еще одна возможность -  это интеграция jabber-users-agent + vcart. Что это значит, это значит при заполнении своей личной карточки пользователь автоматом публикует ее в JUD и она доступна для поиска. В официальной документации говорится о том, что данную возможность не следует применять на публичных серверах, так как всем будет доступна личная информация. Документация доступна здесь...  Для реализации данной возможности нужно скачать патч и применить его следующей командой:

patch -p0 < users-agent.vcard.patch


jabber-users-agent в данном случае нужно скачать и установить отсюда: http://www.jabberstudio.org/projects/users-agent/releases/

tar -zxvf users-agent-1.1.tar.gz
cd users-agent-1.1


Опять же согласно документации делаем остальные настройки.

На этом все.
Охальников Олег Aka H@wk!

Добавить коментарий
Имя:
E-mail
Коментарий:



Код:* Code


Просмотров: 8161

  Ваш коментарий будет первым
RSS комментарии
 
« FreeBSD: Limiting closed port RST response from 214 to 200 packets per second   FreeBSD arpwatch »

#COMMENT

Блокируем Ylmf-pc на Exim, Bru...
Благодарю за кучу уцелевших нервов:) постоянно приходилось б...
30/05/17 00:02 More...
By Mus

Установка даты и времени в кон...
Спасибо
12/05/17 17:49 More...
By dushka

Раскладка в rdesktop
Огромное спасибо!
28/04/17 14:01 More...
By Виктор

Аутентификация средствами Apac...
подскажите как писать пороль цифры ?пж! :sigh
28/03/17 13:06 More...
By Лиза

Logwatch - мониторинг журналов...
Отлично, очень не хватало. Автору большое спасибо, пиши еще.
25/01/17 02:44 More...
By Gregg