У меня этот асько-транспорт прикручен к Openfire взамен штатного плагина. Штатный не устроил корявой работой с пользовательским инфо. Само по себе подключение PyICQt в консоли Openfire не вызывает проблем. Здесь опишу только некоторые особенности установки/запуска.
Пользователь ejabberd используется исключительно по традиции.
Содержание |
Так как PyICQt использует СУБД MySQL и должен работать с сервером Openfire, необходимо определить в rc-скрипте (см. ниже) очередность запуска, добавив строку:
# REQUIRE: openfire mysql
FreeBSD 8.1. На Python 2.5 эта хрень работала, а вот при использовании Python 2.6 стартовать через штатный rc-скрипт отказалась. Самое прикольное, что в зависимостях висит именно питон 2.6. Видимо, не слишком рабочее решение изначально. Решение помогла найти эта статья. Теперь стартовый скрипт выглядит иначе.
Замечу что после обновления Python до версии 2.7 этот же скрипт остался без изменений за исключением изменения номера версии.
cat /usr/local/etc/rc.d/jabber-pyicq-transport
# PROVIDE: jabber_pyicq # REQUIRE: DAEMON # REQUIRE: openfire mysql # KEYWORD: shutdown . /etc/rc.subr name="jabber_pyicq" rcvar=`set_rcvar` load_rc_config $name : ${jabber_pyicq_enable="NO"} : ${jabber_pyicq_dir="/usr/local/lib/jabber/pyicq"} : ${jabber_pyicq_piddir="/var/run/pyicq"} : ${jabber_pyicq_user="ejabberd"} export PYTHON_EGG_CACHE=/var/spool/ejabberd/.python-eggs/ pidfile="${jabber_pyicq_piddir}/PyICQt.pid" python="/usr/local/bin/python2.7" procname="${python}" command="/usr/sbin/daemon" command_args="${python} ${jabber_pyicq_dir}/PyICQt.py -o pid=${pidfile}" run_rc_command "$1"
Сомневаюсь в правильности использования экспорта переменной окружения. Без неё питон пытается создать кеш в /root, что ему не удаётся, естественно. Возможно, есть более правильное решение.
Вторая проблема, с которой столкнулся - это сообщения об ошибках
/usr/local/lib/jabber/pyicq/src/avatar.py:9: DeprecationWarning: the sha module is deprecated; use the hashlib module instead import sha /usr/local/lib/jabber/pyicq/src/tlib/oscar.py:24: DeprecationWarning: the md5 module is deprecated; use hashlib instead import md5
Ужасного в этих варнингах нет ничего, работает и так. Но вообще то, есть обсуждение и там же ссылка на патч.
При запуске вываливается сообщение Unable to find a reactor.
Решение отсюда: в /usr/local/lib/jabber/pyicq/src/main.py в самом начале заменяем сложный алгоритм выбора реактора
reactorchoices = ["epollreactor", "kqreactor", "cfreactor", "pollreactor", "selectreactor", "posixbase", "default"] ... print "Unable to find a reactor.\nExiting..." sys.exit(1)
на пару строк:
from twisted.internet import selectreactor as bestreactor bestreactor.install()
Архив со скриптами распаковать в /usr/local/lib/jabber/pyicq, стартовый скрипт (см. выше) положить куда надо. Туда же сделать симлинк с именем config.xml на файл конфига (хорошо бы его в параметрах указать, но это искать надо, где и как).
Чуть выше есть правка по подключению реактоора - тоже надо.
Далее новенькое. Скрипты не подхватили библиотеку Image, хотя, библиотека PIL (порт py27-pillow) установлена на сервере. При запуске же скрипта лезет ругачка на ее отсутствие. Устраняется сие правкой в src/contact.py и src/imgmanip.py, там следует поправить так: import PIL as Image.