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

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

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

Я к тому что сконвертировать jabberd2 в ejabberd не такая уж и проблема, а преимуществ куда больше...
Вы интересуетесь вопросом домашних сетей в Иваново? Посетите http://homenet.iv.ru
Parent - Написал(а) LOE (Site/forum admin) Дата 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 - Написал(а) Demon Дата 15.12.06 06:27
Да... именно так многопроходно и реализован алгоритм... Сначала все регистрируются.. после все запрашивают/дают авторизации... после вычищаю все подтверждения и сообщения из очередей... В конце заполняю vCard.
Вариантов несколько - так что выбирай на свой вкус :-)
Вы интересуетесь вопросом домашних сетей в Иваново? Посетите http://homenet.iv.ru
Parent - Написал(а) Demonit Дата 18.12.06 14:08
slam если будет интересно посмотри в сторону Wildfire, это сервер написанный на Java, работает сам понимаешь под любой платформой. Есть Веб интерфейс для полного управления им (встроенный). Могу сказать тебе точно, вот общую группу он умеет создавать и когда регистрирубтся пользователи они автоматом прописываются друг у друга без всяких авторизаций. И БД умеет всякие пользовать, хоть LDAP чтоб из Active Derectory брать.
Parent - Написал(а) LOE (Site/forum admin) Дата 19.12.06 14:16
Demonit, делаю предупреждение: если отвечаешь slam'у, то отвечай на его сообщение!
А то отвечаешь на сообщение Демона, а обращаешься к slam'у.
Под _каждым_ сообщением есть ссылка  "ответить", вот и пользуйся ей грамотно, а не бездумно.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent - Написал(а) Demonit Дата 10.01.07 08:40
Олег как обычно заморачиваешься по ерунде :-)
Parent - Написал(а) LOE (Site/forum admin) Дата 10.01.07 09:47
Это не ерунда.
А элементарная культура общения. Если ты хочешь уважения от тех, кто тебя будет читать.
А не просто постишь сообщения ради счетчика.
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent Написал(а) hawk Дата 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'
Предыдущая Следующая Вверх Тема Jabber / Серверное ПО / Общий ростер (44634 хитов)

Powered by mwForum 2.12.0 © 1999-2007 Markus Wichitill

Page created in 0.083s with 11 database queries.