Показаны сообщения с ярлыком Jabber. Показать все сообщения
Показаны сообщения с ярлыком Jabber. Показать все сообщения

4/29/2009

Установка и настройка XMPP сервера ejabberd

Руководство поставило задачу - организовать локальную систему обмена мгновенными сообщениями с возможностью общего чата.
В голове сразу мелькнула мысль поставить джаббер сервер. Почитав форумы, обзоры и прочее я выбрал ejabberd

Ну что сказать, не сервер, а сказка. Скачал, распаковал, проинсталлил и все сразу заработало.
Остановимся на пункте "проинсталлил".сначала как всегда: скачал исходники, начал с configure, а он требует erlang чтоб скомпилиться.
ну, думаю, нет, проходили. Сначала erlang ему, а потом еще пол мира. Качаю готовый .bin файл.
Запускаю и наслаждаюсь: спросил куда ставить, как запускать, кто админ, какой пароль, какой виртуальный хост, ну вообщем все что нужно.
В итоге у меня в /opt/ лежит легковесный, простой в настройке XMPP сервер со своей безой данных (Mnesia), с веб-интерфейсом (указываем порт 5280) и с кучей пользователей.

Настройка заключалась в том, что нужно было организовать общий ростер для всех. а то как начнется авторизация, так хоть комп не включай. Почитав форум на официальном сайте я нашел. Все оказалось очень просто. Открываем веб панель управления -> виртуальные хосты -> "имя_хоста" -> группы общих контактов -> и тет создаем новую группу, назовем ее all (или кому как захочется). После ее создания открываем и пишем:
название - all , описание - группа для всех, члены - @all@ , видимые группы - all. Как вы догадались все дело в пункте "члены". Здесь можно указывать либо каждого пользователя отдельно (user@host admin@host), либо @all@ для всех. Так же хочу попробовать в дальнейшем разбить пользователей на меньшие группы и перепробовать это дело для пункта "видимые группы".

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

В качестве клиента выбрал Psi - просто потому что он самый распространенный. При подключении клиент выдал мне что ему не нравится сертификат. ну что ж, будем делать новый. После установки сертификаты были, но я решил их переделать:

openssl req -new -x509 -newkey rsa:1024 -days 3650 -keyout privkey.pem -out server.pem
openssl rsa -in privkey.pem -out privkey.pem
cat privkey.pem >> server.pem


После этого скопировал server.pem в папку %program files%/Psi/certs и установил его.

1/27/2009

Уведомление о новых сообщения в Jabber в Emacs

Если у вас в системе есть библиотека libnotify, то можно заставить emacs показывать красивенькие уведомления о новых сообщениях от пользователей.
Чтобы проверить, установлена ли библиотека, нужно написать which notify-send, в консоли, и узнать ответ =).

А теперь к самому главному.
Emacs поддерживает замечательную концепцию Хуков (Hook). Хук, это реакция на некоторое событие, которые может возникнуть во время работы текстового редактора. Например, вы можете определить реакцию emacs'a, когда возникает событие нажатия клавиши, повесив на это событие какой нибудь хук. Например перевод вводимого символа в верхний регистр.

Предупреждаю сразу, что я в Lisp пока не силен, так что, если что написано не так, то просьба поправлять:
Теперь непосредственно о том, как сделать уведомление:
;; Определяем, переменную для использования иконки в уведомлении
(defvar jabber-libnotify-icon ""
"*Icon to be used on the notification pop-up. Default is empty")

;; определеям переменную, сколько милисекунд будет висеть уведомление
(defvar jabber-libnotify-timeout "2000"
"*Specifies the timeout of the pop up window in millisecond")

;; определяем функцию, которая непосредственно отображает уведомление
(defun jabber-libnotify-message (from msg)
"Show MSG using libnotify"
(let ((process-connection-type nil))
;; запускаем утилиту notify-send и передаем ее параметры:
;; -t время отображения
;; -i отображаемая иконка
;; from - заголовок оповещения
;; msg - непосредственно сообщение оповещения.
(start-process "notification" nil "notify-send"
"-t" jabber-libnotify-timeout
"-i" jabber-libnotify-icon
from msg)))

;; определяем прототип функции, согласно тому как того требует описание в jabber.el
(defun jabber-libnotify-message-display (from buffer text propsed-alert)
(jabber-libnotify-message from text))

Эта функция будет вызвана из модуля Jabber.el, при возникновении определенного события. Далее нам надо указать при возникновении какого события вызывать нашу функцию, нам нужно повесить хук:
;; вешаем хук на событие jabber-alert-message-hooks
(add-to-list 'jabber-alert-message-hooks
'jabber-libnotify-message-display)

Теперь, при получении нового сообщение вы будете получать вот такое уведомление:

1/23/2009

Используем Jabber с помошью текстового редактора

В связи с недавними проблемами в ICQ, куча людей резко кинулась использовать jabber.
Я тоже поддался стадному чувству, сдул пыль со своего jabber аккаунта и решил посмотреть что же получится.
В качестве клиента ICQ я использую pidgin. В нем меня все устраивает, хотя и не хватает некоторых возможностей. Но захотелось немного экзотики. Решил я значит использовать jabber с помощью Emacs'a.
Оказалось это легко и просто:
1. Идем на какой нибудь jabber сервер и регистрируемся. У меня имеется аккаунт на jabber.ru
2. Скачиваем emacs-jabber. (Я выгружал исходники из cvs)
3. Внимательно читаем README файл в каталоге с исходниками.
4. Конифгурим, компилим, устанавливам. (./configure && make && make install)
5. в ~/.emacs добавляем путь к скомпиленному emacs-jabber
(add-to-list 'load-path "~/emacs/jabber/share/emacs/site-lisp/") (require 'jabber)

Далее нужно немного настроить emacs, а собственно указать "текстовому редактору" сервер, куда коннектится, логин и пароль. Можно пароль не указывать, но тогда его придется каждый раз вводить при соединении.
Сделать это можно следующими способами:
1. Выбрать в меню Jabber->Customize
2. M-x jabber-customize
3. Прописать все необходимое в конфиг файле.

Разница в том, что в первых двух случаях вы будете общаться с графическим конфигуратором, и тыкая мышкой в кнопочки, можно будет легко все настроить.

Я настраивал с помощью конфиг файлов:
1. Устанавливаем параметры учетной записи, сервера и т.д.
(custom-set-variables
'(jabber-account-list (quote (("jabberid@jabber_sever" ;; ваш jabber ID
(:password . "password") ;;
ваш пароль
(:network-server . "jabber.ru") ;; jabber сервер
(:connection-type . ssl))))) ;; лучше использовать ssl
)

Можно указать несколько соединений.

2. Некоторые параметры относящиеся к интерфейсу

(custom-set-variables
;; Указывает формат отображение элементов в контакт-листе:
;; %c - соответствует "*" если контакт в сети, "" - если контакт не в сети
;; %n - псевдоним или jabberID контакта
;; %a - отображать аватар или нет.
'(jabber-roster-line-format " %c %n %a")
;; при запуске не показывать подсказку для контакт листа.
'(jabber-roster-show-bindings nil)
)

3. Добавляем подсветку URL в сообщениях:

(add-hook 'jabber-chat-mode-hook 'goto-address)


Для начала этого будет вполне достаточно.
Используя в качестве Jabber клиента Emacs, вы получаете неограниченные возможности по набору текста, проверке орфографии, и всяческих других фишек, поддерживаемых этим редактором.
А выглядет это все примерно так:

Все красиво, быстро, удобно, функционально.
Также есть поддержка смайлов и уведомления о входящих сообщениях через libnotify или osd. Но об этом в следующий раз.