Видео смотреть бесплатно

Смотреть 4k видео

Официальный сайт hauteecole 24/7/365

Смотреть видео бесплатно

28.06.10 19:31 wiz

Мой OpenSource проектcroom - вебморда к xmpp конференциям

http://chat.mymcomm.net/#[email protected]

Как многие уже знают, однажды я нашёл прикольную морду к XMPP-конференциям - Speeqe. И начал везде её пиарить. Но у неё есть две больших проблемы:
  1. президенты - любой вошедший по ссылке человек будет иметь ник ИмяПрезидентаСША123456. Это ужасно - надо знать команду из IRC /nick и надо это делать каждый раз при входе. Регистрация помогает, но это (о ужас!) надо регистрироваться. У себя на хосте я прикрутил OpenID, SSO и много других слов и саму систему это отнюдь не упростило.
  2. движок на питоне. Несмотря на то, что прекрасная библиотека Strophe может работать на голом nginx, Speeqe хочет свой сервер, питон, джангу и всё такое. При чём хочет совершенно необосновано.


Я долго хотел сделать велосипед, лишённый этих педалей недостатков и наконец решился. Устав от унылого проекта на работе я таки выкатил нечто, входящее в конфы и даже не вызывающее желание взять и ... поставить гаджим.
Основными критериями было:
  1. возможность дать ссылку на комнату
  2. сначала спросить ник, потом входить
  3. восстанавливать ник и комнаты при заходе, например, с закладки
  4. ... и чтобы при этом не тоормозиллоо


Ручной труд я страшно нелюблю, поэтому для интерфейса взял ExtJS (уже Sencha), jQuery для работы с XML и StropheJS для XMPP BOSH транспорта. Нечто подобное я использую и в своём рабочем проекте. Проект лежит в bzr-репозитории на Launchpad. Собственно практически весь код доступен через view page source и он довольно прост.

Состояние записывается в localStorage браузера (это типа кукисов, но намного мощнее), а для совсем танкованых браузеров (и для выдачи ссылок на комнаты) - в урл после #. Тоесть получается, что даже простой nginx должен это раздавать. XMPP BOSH требует проксирования урла чтобы браузер смог делать запросы к жабер-серверу, поэтому совсем на тупостатике на бесплатном хостинге выкатить пока не получится.

Изначально я сделал вебморду как надстройку над джанго-проектом для захода по ссылкам, восстановления состояния и всего такого. Но так и не использовал, обойдясь голым JS, пусть и современным. По-хорошему, надо отделить движок MUC, обшивку интерфейса (контейнер для комнаты) и серверный бэкенд. В принципе, можно на той же джанге сделать регистрацию и на её юзеров завязать внешнюю авторизацию жабер-сервера. Ну и там ещё фичи типа пре-бинд сессий и пр.

В будущем хотелось бы иметь embedded режим для встраивания в свои сайтики с автологином и автозаходом куда надо. Это не сложно, но надо делать. Как минимум - надо ещё доделать список присутствующих, но я уже уполз обратно в работу.

Если кто хочет поучаствовать или просто интересуется деталями - пишите. Патч - лучшая критика (;

upd: Открыл полноценный проект на https://launchpad.net/croom. Баги, вопросы и код можно кидать туда. Подписывайтесь на ленты.



m0nhawk 28.06.10 19:50 # +0
Плюс :)
time2die 28.06.10 20:16 # +1
+1 но cut был бы не лишним
muhas 28.06.10 20:51 # +0
опять бош через прокси :(

жирный плюс за проект... в ближайшее время опробую в жизни
wiz 28.06.10 21:16 # +0
А что не так с бош прокси? В принципе в строфе есть через flash, но это имх совсем печально. Ждём вебсокетов и будет счастье.
muhas 28.06.10 22:44 # +0
не каждый хостинг умеет, эх как хорошо иметь свой сервак :)

забыл спросить, а как с запароленными конфами?
wiz 28.06.10 23:02 # +0
У строфы есть какие-то хитрые интерфейсы на этот случай, можно попробовать ими цепляться.

С запаролеными и закапчеными пока никак - patches welcome (: Ну или хотя бы ссылки на соответствующие XEP и JEP. Это не сложно, но надо делать.
muhas 29.06.10 09:14 # +0
http://xmpp.org/extensions/xep-0045.html
wiz 29.06.10 09:20 # +0
#enter-pw забыл (ж
andrew72ru 28.06.10 21:33 # +0
Эх блин, а я вот буквально пару месяцев назад свою написал… Причем с такими костылями, что аж самому не по себе.
Если коротко - то в конфе сидит бот, который пишет логи. Эти логи парсит php+javascript (jQuery), и выдает их в окошко пользователю.
Самый главный недостаток - это то, что я не разобрался (времени не было), как заставить скрипт надолго приконнектиться к серверу.
Собственно, происходит что. Webclient заходит в конфу, отправляет сообщение и отключается. Я вижу месадж в своей конфе, а пользователь - в браузере. Ну и я могу ему отвечать. Ну или бота можно насторожить так, чтобы говорил "извините, никого нет дома".
Проблема возникнет тогда, когда два человека одновременно зайдут.
Но такого еще не было. Да и не будет наверное - не те люди наши клиенты, чтобы так вот общаться с нами вот так вот. Они лучше позвонят и будут по телефону мозг выносить :D
cblp 28.06.10 22:14 # +3
Записано: jawiki.ru/Croom
alff31 29.06.10 01:01 # +0
А вот, скажем, есть форум phpbb, трудно ли сделать так, чтобы при входе в конференцию, брался логин с форума?
kstep 29.06.10 01:38 # +0
Думаю, что нет. Там обычная таблица юзеров с паролями в мд5, ЕМНИП.
Нужна только обвязка на пхп, как я понимаю, т.к. само приложение на чистом js.
alff31 29.06.10 02:54 # +0
О, вообще ничего писать не надо, как я понял. Поставить ссылку на форуме и каждому юзеру отдавать свой config.js с его логином.
wiz 29.06.10 08:14 # +0
Не совсем. Если только для чятиков, то да - в конфиг ник, а сам юзер анонимный.
Если хочется нормальных юзеров, то надо к жабер-серверу прикручивать внешнюю авторизацию, а в строфу передавать либо ключ авторизации либо авторизованую pre-bind сессию (так лучше).
alff31 29.06.10 02:23 # +0
Совсем ламерский вопрос. Как скачать весь ваш проект не имея bazaar? Или качать каждый файлик отдельно?
alff31 29.06.10 04:12 # +0
Установил bazaar (В дебиане/убунте aptitude install bzr). После этого выполняем
$ bzr branch https://code.launchpad.net/~wiz/+junk/croom
wiz 29.06.10 08:14 # +0
$ easy_install bzr
$ bzr branch lp:~wiz/+junk/croom
alff31 29.06.10 04:03 # +0
Раскажу, как я понял работу вебморды. python и django вообще не участвуют, лишь отдают юзеру index.html и скрипты. С набором скриптов браузер выступает в качестве клиента. Подключается к серверу, указанному в config.js.

Я не очень понял, как он подрубается к jabber серверу. При заходе на http://room.aenor.ru/#имя_комнаты, у меня был адрес аккаунта что-то вроде.
[email protected]/29484541361277764641617653
[email protected]/998514162127776505740466
[email protected]/28866583591277769001522538

Получается при каждом заходе ваш клиент регистрирует аккаунт? Можно ли осветить поподробнее настройки jabber-сервера?

И что можно сделать, если на хостинге не установлен jabber-сервер, можно ли использовать какой-нить внешний сервак, что-то вроде jabber.org или jabber.ru?
wiz 29.06.10 08:15 # +0
Это SASL Anonymous - одноразовые анонимные юзеры. В ростер их добавлять бесполезно, а для конференций там всё равно пишется ник.
wiz 29.06.10 08:19 # +0
Надо договориться с админами сервера чтобы они разрешили анонимные BOSH-подключения к ним и через реверс-прокси на них завернуть урл.

Для сайто-хостинга эта штука недоступна, минимум VPS надо.

Эти чятики больше для админов локалок - чтобы не городить ужасные поделия типа как выше описано.
alff31 30.06.10 20:36 # +0
А можно использовать один аккаунт? Что-то типа
[email protected]/user1
[email protected]/user2

Jabber же, вроде позволяет мульти-подключение. Или при этом будет пароль всем в настройках показываться? Мне бы веб-морду к конференции сделать на форуме, людей немного, человек 20 максимум. Форум на виртуальном хостинге.
wiz 30.06.10 20:53 # +0
В конференциях этот (анонимный) адрес не используется, там все пользователи вида [email protected]/nickname
alff31 30.06.10 21:03 # +0
Ну вот и я к тому же. То есть все подключаются к одному адресу [email protected], а потом заходят в конференцию с этого адреса под разными никами. Что надо сделать, чтобы по такому принципу работало? А то я сам как работает протокол xmpp не очень разбираюсь, и что за реверс прокси и BOSH не очень понимаю. И тема что-то не гуглиться, все на английском, трудновато дается. Можешь подсказать?
wiz 30.06.10 21:07 # +0
Можно, но зачем?
alff31 30.06.10 21:10 # +0
Ну хотя бы потому что у меня нет VPS и джаббер-сервера, а только виртуальный хостинг.
wiz 30.06.10 21:30 # +0
Я думаю тебе проще будет с нуля нарисовать простеньку морду для чятика, чем мне раскорячивать авторизацию под такой формат.

Про сервер без BOSH я пока не могу ничего конкретного сказать - пока не занимался плотно.
Abaza 29.06.10 08:24 # +0
Планируется показывать список пользователей в комнате?
wiz 29.06.10 08:29 # +1
Да, там оно их уже получает для таб-дополнения, но нигде не показывает.
Abaza 29.06.10 08:38 # +0
Ладно, перефразирую вопрос. Планируется ли показывать пользователю список пользователей? :)
wiz 29.06.10 09:44 # +0
Открыл полноценный проект на https://launchpad.net/croom. Баги, вопросы и код можно кидать туда. Подписывайтесь на ленты.
alff31 30.06.10 21:32 # +0
У вас в репозитории отсутствует файл media/stuff.js. Добавлен в исключения, почему-то.
wiz 30.06.10 21:43 # +0
Потому что его надо под свой сервер писать. Рыбу положу потом.
wiz 01.07.10 09:33 # +0
Посмотрел, он не используется вообще. Нужен тот, что в templates.
wiz 01.07.10 10:22 # +0
Замечательно работает на n900 :3

4750769791_34272b490f_z.jpg
wiz 06.10.10 13:08 # +0
В связи с нехваткой времени по всем фронтам, ап!

Немного пофиксил фичи, добавил баги и оставил задел на расширение. Нужен человек со знанием JS чтобы дописать плагинчиков.

Алсо, добавлен специальный режим для встраивания в свои сайтики.
wiz 03.11.10 22:00 # +0
Основные баги пофикшены, фичи добавлены. Вполне юзабельно теперь.
wiz 22.02.11 14:28 # +0
Проект переехал на hg и, соотв-но, bitbucket: https://bitbucket.org/dpwiz/croom.

Заодно почистил от джанговского барахла.

Лучшие блоги (все 158)
Топ пользователей Топ блогов
Топ пользователей Топ блогов
Элита (все 3233 из 234 городов)
Топ пользователей Топ блогов
welinux.ru

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн