Ivanovo Linux Users Group - Not logged in
Forum Help Search Login
Previous Next Up Topic Jabber / Серверное ПО / Общий ростер (47137 hits)
- By slam Date 05.12.06 12:23 Edited 05.12.06 12:26
Собственно возникла такая задача. Есть jabberd2 + mysql, как можно организовать общий ростер для всех пользователей. Слышал, что в тесных кругах ходит перловый скрипт...
Parent - By Demon Date 06.12.06 06:22
Может это и не тот ответ на вопрос, что ты ожидаешь... Но я крайне рекомендовал бы перейти на ejabberd (http://ejabberd.jabber.ru)
Практически все массовые и мелкие сервера уже давно перешли с jabberd на ejabberd..
В нём есть в том числе и общие ростеры и общие группы.
Вы интересуетесь вопросом домашних сетей в Иваново? Посетите http://homenet.iv.ru
Parent - By slam Date 06.12.06 09:26
Вариант конечно неплохой, но как поступить со сформированной годами БД jabberd2. Можно ли как нибудь импортировать ее в формат БД используемой в ejabberd (не XML).
Parent By Demon Date 07.12.06 08:36
Очень просто - конвертировать. Я это проделал на 3-х серверах года два назад.
Были какие-то конверторы, с которыми я очень мучался... Но в результате написал скрипт на php, который конвертит в сервер данные из базы, перенося регистрацию пользователей, ростеры (регистрации), vCard...
Единственное, что не переносилось - сообщения (оффлайновые, конечно).

Олег (LOE) так же как-то конвертировал, только я уже и не помню как.
Вы интересуетесь вопросом домашних сетей в Иваново? Посетите http://homenet.iv.ru
Parent - By LOE (Site/forum admin) Date 12.12.06 10:11
Честно говоря, я уж и не помню, конвертировал или нет.
И не забываем - в ejabberd есть встроенный веб-интерфейс. Через него так-же можно легко всё настроить.
А можно завести ejabberd, сдампить в текстовом виде его базу, разобраться в формате (не сильно запутанном), внедрить туда нужные (старые) данные и попросить ejabberd импортировать исправленный файл.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - By Demon Date 12.12.06 19:33
Олег... если ты помнишь я вначале так и пытался сделать... Но всё же формат не сильно простой.
В конце концов... я просто приспособил своего jabber бота чтоб он сделал всю работу... сам зарегистрировал всех юзверей... прописал им ростеры в нужном виде...
Хотя с форматом базы было бы красивше и полноценней...
Вы интересуетесь вопросом домашних сетей в Иваново? Посетите http://homenet.iv.ru
Parent - By LOE (Site/forum admin) Date 12.12.06 19:42
Когда недавно пришлось удалять поддомен в ejabberd'е, то пришлось глянуть на такой дамп. Не такой уж он и сложный.
А вариант с ботом - довольно красивый. Отдать ему список юзеров и их ростеры, пусть сам регается и прописывает ростер.
Останется вопрос о взаимной авторизации.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - By Demon Date 13.12.06 07:32
Он взаимно и авторизует их.. в чём проблема? Ведь это ж тоже сообщения subscribe...
Вот только сообщения оффлайновые в этом способе теряются... хотя и их можно понарассылать, но я этого не делал.
Ну ещё даты регистраций и сообщений нереальные - время конвертации стоит..
Ещё сейчас подумал... что, вероятно, в моей реализации группы юзверей в ростерах теряются, но над этим тоже можно подумать.

Кстати, ещё способ - сейчас ejabberd поддерживает хранение не только в mnesia, но и в mysql... Конвертируй как желаешь.

Я к тому что сконвертировать jabberd2 в ejabberd не такая уж и проблема, а преимуществ куда больше...
Вы интересуетесь вопросом домашних сетей в Иваново? Посетите http://homenet.iv.ru
Parent - By LOE (Site/forum admin) Date 13.12.06 07:59
"Чистый" ejabberd.
Бот регистрируется как user1, у которого в ростере user2. Добавляет в ростер, но такого юзера еще нет - повисшая авторизация.
Регистрируется как user2, добавляет в ростер user1'а и запрашивает авторизацию (уже можно).
Значит, надо входить как user1 и подтверждать авторизацию, запрашивая в свою очередь у user2
Опять логиниться как user2 и подтверждать авторизацию.
Итого на каждую пару пользователей 2 раза регистрации и 2 раза авторизации.
Нет, я не говорю что невозможно ;-)

Всё зависит от числа пользователей. Если их много - имеет смысл разобраться с дампом. Например:
{roster,{"loe",{"user1","jabber.ru",[]}},
        "loe",
        {"user1","jabber.ru",[]},
        "USER1",
        both,
        none,
        ["JABBER-RU"],
        [],
        []}.

Это в моем ростере пользователь user1@jabber.ru (отображается как USER1) в группе JABBER-RU с взаимной авторизацией (both). Думаю, проблем не составит сгенерировать аналогичный блок.

Вариант с использованием MySQL базы в ejabberd тоже возможен.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - By Demon Date 15.12.06 06:27
Да... именно так многопроходно и реализован алгоритм... Сначала все регистрируются.. после все запрашивают/дают авторизации... после вычищаю все подтверждения и сообщения из очередей... В конце заполняю vCard.
Вариантов несколько - так что выбирай на свой вкус :-)
Вы интересуетесь вопросом домашних сетей в Иваново? Посетите http://homenet.iv.ru
Parent - By Demonit Date 18.12.06 14:08
slam если будет интересно посмотри в сторону Wildfire, это сервер написанный на Java, работает сам понимаешь под любой платформой. Есть Веб интерфейс для полного управления им (встроенный). Могу сказать тебе точно, вот общую группу он умеет создавать и когда регистрирубтся пользователи они автоматом прописываются друг у друга без всяких авторизаций. И БД умеет всякие пользовать, хоть LDAP чтоб из Active Derectory брать.
Parent - By LOE (Site/forum admin) Date 19.12.06 14:16
Demonit, делаю предупреждение: если отвечаешь slam'у, то отвечай на его сообщение!
А то отвечаешь на сообщение Демона, а обращаешься к slam'у.
Под _каждым_ сообщением есть ссылка  "ответить", вот и пользуйся ей грамотно, а не бездумно.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - By Demonit Date 10.01.07 08:40
Олег как обычно заморачиваешься по ерунде :-)
Parent - By LOE (Site/forum admin) Date 10.01.07 09:47
Это не ерунда.
А элементарная культура общения. Если ты хочешь уважения от тех, кто тебя будет читать.
А не просто постишь сообщения ради счетчика.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent By hawk Date 16.09.09 07:40
В jabberd2 не нужен перловый скрипт, там по умолчанию есть модуль ростера в sm, и файл юзерей roster.xml, следующего содержания:
===
<query xmlns='jabber:id:roster'>
  <item name='SysAdmin' jid='sysadmin@host.org.ru' subscription='none'>
  <group>Support</group>
  </item>
</query>

===
Для одного пользователя пример, далее список пополняется админом. При регистрации нового юзера он получает список юзерей.
echo "good..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
Previous Next Up Topic Jabber / Серверное ПО / Общий ростер (47137 hits)

Powered by mwForum 2.12.0 © 1999-2007 Markus Wichitill

Page created in 0.085s with 10 database queries.