Инструменты пользователя

Инструменты сайта



// Ejabberd и LDAP

На правах закладки: ejabberd - группы из LDAP на о снове OU - пример реализации. Но без документации даже не начинать читать. Модуль mod_shared_roster_ldap появился только в комплекте ejabberd 2.1.6, если версия младше, как, например, в Debian Squeeze (2.1.5), то качать отсюда: https://alioth.debian.org/projects/ejabberd-msrl, читать документацию, компилять и настраивать.

// Jabber в Vkontakte

Кому интересно: http://vk.com/help.php?page=jabber

В ростере отображает список друзей, в онлайне тех, кто в онлайне на сайте (или самом жабер-клиенте), отправленные сообщения через клиент доступны как отправленные личные сообщения на сайте. Через редактирование профиля можно подправить аватару, остальное - ниа (или не все, я сайт попробовал указать - обломс). Статусы и муды пока, вроде, не поддерживаются.

При добавлении учетной записи обязательно включить «Аутентификацию открытым текстом», не супер секурно, но…

И ещё, постоянно в почту летят уведомления о новых сообщениях, нужно выключать.

// Делать было вечером, делать было нечего

Сначала поставлена задача: удалить рекомендации в своем блоге на Juick.com, вручную неохота было, решил написать скрипт, в результате получился некоторый аналог DELETEALL, только без удаления подписок, комментов.

Код:

#!/bin/bash
 
### Удаляет ваши сообщения или рекомендации с Juick.com
 
# section может быть: blog, recomm
section="blog"
# имя блога, по сути - ваш ник
blog="vasya"
 
# Jabber account, в котором у вас зарегестрирован juick@juick.com
jname="vasya.pupkin"
jpass="superpassword"
jserv="jabber.ru"
 
## BEGIN ##
u="http://juick.com/$blog/?show=$section"
tmp_file=tmp_$section.txt
while true
do
  # посты со страницы будут удалены, соответственно их место
  # займут более старые
  lynx -dump "$u" > $tmp_file
 
  # Вычленяем ссылку на следующу страницу
  tmp=`cat $tmp_file | grep 'Older ->' | grep '|'`
  if [ -z "$tmp" ]; then
    next_num=`cat $tmp_file | grep 'Older ->' | awk -F']' '{print $1}' | sed 's| \[||'`
  else
    next_num=`cat $tmp_file | grep 'Older ->' | awk -F'|' '{print $2}' | awk -F']' '{print $1}' | sed 's| \[||'`
  fi
  # да, этаким мы сделаем trim, сделайте при помощи sed, будет элегантней (и просто)
  next_num=`echo $next_num | awk '{print $1}'`
  next_link=`cat $tmp_file | grep "$next_num. http://" | grep "show=$section" | grep 'page=' | awk '{print $2}'`
 
  cat $tmp_file \
              | grep '\[[0-9]*\]#[0-9]*,' \
              | grep 'now\|ago' \
              | awk '{print $1}' \
              | sed 's|^\[[0-9]*\]||;s|,$||' \
              | while read line
              do
                post_num=`echo $line | sed 's|^#||'`
                action="D"
 
                [ x"$section" = x"recomm" ] && action='!'
 
                echo "Delete/unrecomend post: $line (http://juick.com/$post_num)"
                echo "$action $line" | sendxmpp -u $jname -p "$jpass" -j $jserv -s 'bye' juick@juick.com
 
                sleep 10
              done
 
  # А вот когда указателя на следующую страницу не будет, тогда выходим
  if [ -z "$next_num" ]; then
    break;
  fi
done

Для чего не спрашивайте, просто стало интересно написать :) Для работы нужно:

  • bash
  • lynx
  • sendxmpp

Счастливые арчеводы могут первые два пункта поставить из репозиториев, а sendxmpp собрать из AUR: http://aur.archlinux.org/packages.php?ID=17929

UPD: спасибо камраду sandr1x, в Ubuntu/Debian работа программы sendxmpp (там кстати её версия указана как 1.18, хотя актуальная - 0.0.8) завершается с ошибкой:

Can't use an undefined value as a HASH reference at /usr/share/perl5/XML/Stream.pm line 1165.

С подобным поведением сталкивались на работе когда настраивали sendxmpp для отправки уведомлений. Решение такое: открываем файл /usr/share/perl5/XML/Stream.pm переходим на строку указанную в ошибке (1165), находим чуть выше ее строку:

    delete($self->{SIDS}->{$currsid});

и заменяем на:

       delete($self->{SIDS}->{$currsid}) unless $currsid eq $sid;

Примерный патч выглядит так:

--- /usr/share/perl5/XML/Stream.pm.orig 2007-07-10 21:16:47.000000000 +0400
+++ /usr/share/perl5/XML/Stream.pm 2009-05-26 13:53:04.000000000 +0400
@@ -1160,7 +1160,7 @@
                $self->{SOCKETS}->{*STDIN} = $sid;
        }
 
-       delete($self->{SIDS}->{$currsid});
+       delete($self->{SIDS}->{$currsid}) unless $currsid eq $sid;
 
    if (exists($self->GetRoot($sid)->{version}) &&
        ($self->GetRoot($sid)->{version} ne ""))

Файл принадлежит пакету libxml-stream-perl версии 1.22 в ArchLinux это пакет perl-xml-stream версии 1.23, там данные исправления уже присутствуют, так что если есть возможность - обновляемся, или ставим Arch, правда не задаем глупых вопросов, а то новоявленные арчеводы ex-убунтоиды ими уже на форуме поддостали :)

// PSI: версия из svn

История возвращается на круги своя, хронология такая:

  • SIM, Pidgin и Kopete jabber и icq - после чего оказался на Pidgin. Поработав, и вдоволь «насладившись» его фичами, начал искать альтернативы. Главное мне было - удобная работа в Jabber. И вот, следующий шаг.
  • Gajim - поставил Gajim все хорошо… но кушает памяти много и в скором времени начинает крайне медленно ворочаться.

В результате решил попробывать опять старый добрый PSI, но собрать его из svn репозитария

Итак, что мне запомнилось и что хотелось бы отметить (в том числе и по сравнению с текущей стабильной 0.11):

  • Закладки и автоподключение к конференциям, доступ: по имени поимени аккаунта (да, нет возможности мержить контакты в один список, они распределены по аккаунтам, мне лично так удобнее, так что для меня не проблема) правой кнопкой мыши и там Bookmarks ну а дальше, думаю понятно.
  • Execute command, если у вас несколько соединение с разными resource (например дома и на работе), то, если включите отображение self-contact, по щелкнув правой кнопкой мыши по нему увидите этот пункт, команды могут быть типа: переслать все сообщения, установить статус и т.п. Кстати, эта фича работала очень загадочно на Gajim, а здесь - как часы :)
  • Появился пункт Advanced в настройках, представляет собой нечто похожее в Pidgin - не все опции имеют интерфейсные элементы для настройки, так вот, их можно установить тут. Не всё ещё работает, но на то это и svn версия.

Про транспорты я и не говорю, тут, наверное, самое удобное и стабильное функционирование функции Service Discovery.

В общем, вот теперь это у меня точно клиент «по-умолчанию» вся нужная функциональность есть, что меня и радует ;)

PS и настраиваемое окошко ввода - вечная полемика разрабов Pidgin, что даже привело к форку :-D

// Gajim

Немного про Jabber-клиент Gajim и транспорты.

Gajim

Удобный Jabber клиент. Жаль что только юзает PyGTK, что не придаёт ему быстродействия и заниженных требований к памяти. Это собственно все его минусы.

Из плюсов:

  • Удобная организация конференций, возможность делать закладки, осуществлять автоподключения и это по спецификации XEP хранится на jabber-сервере
  • Удобная организация вкладок, что существенно есть возможность открывать все окна во вкладках, а можно группировать по типам: беседы во вкладках в отдельном окне, конференции во вкладках в отдельном окне, приваты во вкладках в отдельном окне.
  • При запросе авторизации есть возможность прям из запроса посмотреть информацию о вопрошающем, начать беседу с ним без отмены/предоставления авторизации, дать или не дать авторизацию.
  • Более-менее удобная организация навигатора сервисов Jabber
  • Возможность «микшировать» ростер, т.е. использовать общие группы для всех аккаунтов (пока нигде не видел)
  • Ростер полностью server-side, т.е. даже сабконтакты хранятся на сервере, правда, если они поддерживаются (Google не поддерживает)
  • Для отображения транспортов используется отдельная группа, удобно вызывать дополнительную функциональность транспорта (правой кнопкой клик ;))
  • Ну всякие нотификации, мигания в трее и пр пр пр, описывать не буду.

Кстати, по умолчанию строка отправления узкая, но увеличивает свой размер динамически с вводом новых строк, стоит привыкнуть, потом удобно :) Отправка сообщения через нажатие Enter можно исправить через правку свойств в окне Advanced (открывается список со всеми параметрами, ихними значениями и описанием), имхо, наиболее интересное расположение настроек: основный вынесены по пунктам, для продвинутых пользователей сделан интерфейс для более тонкого вмешательства.

Транспорты

Итак, что подвигло поставить то его опять… Ну во первых, более мощная система что на работе, что дома. Во вторых, у меня есть несколько контактов в MRIM, а транспорты в Pidgin не подключались.

Для начала занялся поиском ICQ шлюза.

Список ICQ транспортов можно посмотреть тут: http://bombus-im.org/wiki/howto/howto_icq

Обновляется регулярно, особо стоит отметить шлюзы PyICQ - умеют работать с ростером хранимым на сервере, плюс подставляют нормально имена пользователей, а не представляют их в цифровом виде.

Основном критерий выбора - близкое расположение и малая загрузка. Задержку определял пингом, для перебора всех серверов сделал скрипт:

#!/bin/bash
 
# Get icq transport list from: http://bombus-im.org/wiki/howto/howto_icq
ifile=pyicq.list.raw
 
echo > results.txt
for i in `cat $ifile`
do
        echo $i | sed 's|^?*icq?*\.||' | xargs ping -c 5 | tee -a results.txt
done

Файл pyicq.list.raw - это список серверов через пробел или каждый на новой строчке, берется по ссылке выше.

Пример (актуален на 2008.02.14):

icq.chaoslab.info
icq.geeklife.ru
icq.gelf.no-ip.org
icq.informjust.ua
icq.jabbe.net.ru
icq.jabber.corbina.ru
icq.jabber.cv.ua
icq.jabber.crimea.ua
icq.jabber.krasu.ru
icq.jabber.org.ru
icq.jabber.spbu.ru
icq.jabber.splc.ru
icq.jabber.te.ua
icq.jabber.ukrwest.net
icq.plotinka.ru
icq.sgtp.samara.ru
icq.tr.element.dn.ua
pyicq.jabber.te.ua
icq.jabber.tsure.ru
icqp.13.net.ru
icq.jabber.b.gz.ru
icq.jabber.fds-net.ru
icq.jabber.krastalk.ru
icq.jmsk.legion.ru
icq.jabber.kursk.lug.ru
icq.vlg.lukoil.ru
icq.myid.ru
icq.ilikejabber.ru
icq.jabber.nwg-nv.ru
icq.mo.pp.ru
icq.proc.ru
icq.rulezz.ru

Результаты посмотреть в файле results.txt по наименьшему времени пинга выберите сервер.

Есть ещё JIT транспорты… это первый ICQ транспорт для Jabber, функционалом и прочими радостями не впечатляет.

В качестве MRIM транспорта выбрать любой доступный, например на jabber.ru или geeklife.ru

// SIM, Pidgin и Kopete jabber и icq

Intro

На днях, разбираясь в старой документации и прочих личных файлах обнаружил пароль от своей забытой аськи, решил подрубить. Очень долгое время я пользовался только jabber и наиболее приемлемый клиент был Psi, не долго думая решил попробовать использовать jabber↔icq гейт на одном из серверов, но ничего хорошего из этого не вышло. После чего решил попробовать различные клиенты которые я когда либо использовал (и не использовал).

SIM

Сайт программы: http://sim-im.org

Почему начал с неё? Да потому как, очень долгое время пользовался именно ею, тогда у меня не было Jabber'а и про него слыхом не слыхивал. Причины ухода с него я не помнил, потому решил обновить память.

Программа на QT3, может, опционально, компилироваться с поддержкой KDE (тогда в трее может отображаться значок приложения, удобно). Скачал исходники из SVN (официальный релиз уж очень дремучий, собственно один из моментов почему от него отказался - фактически была заброшена разработка), отстроил, проблем никаких не возникло.

Запускаю… Всё тот же старый добрый SIM, начинаю смотреть

ICQ

Тут все в порядке, меняется пароль, можно редактировать профиль, можно искать пользователей. С кодировками сообщений проблем не возникло (для каждого пользователя можно настроить индивидуально, что есть баааальшой плюс).

Jabber

Старые аккаунты что были прописаны в SIM не заработали, потому как пароли поменялись, со старыми естественно залогиниться не получилось, а новые можно установить только при установленной сессии (!!!), так ладно, начинаю смотреть и… вот оно! SIM не умеет в Jabber ничего кроме как мессенджинга: нет обозревателя сервисов, нету поиска, нету поддержки чат-румов, вообще ничего, все, это ставит для меня на этом мессенджере (пока?) большой жирный крест.

Кроме того, клиент очень не стабилен, иногда падает на ровном месте, без видимых причин, иногда работает нормально днями.

Kopete

Сайт программы: в комплекте KDE

Он уже стоял в системе в комплекте постановки KDE, потому решил его вторым по счету попробовать.

Первое впечатление - приятненько, красивый интерфейс, настраиваемые окна чатов, темы смайлов, все можно поставить парой щелчков мышки.

Jabber

Тут все нормально, и поиск есть и, пусть и примитивненький, но обозреватель сервисов, правда как с его помощью регистрировать гейты я так и не понял. В общем работает вроде и ладно.

ICQ

В принципе работает, с первого взгляда, но как оказалось не умеет менять пароль, точнее всегда неудачно завершается, не умеет редактировать информацию о профиле. Редактирование профиля обещали сделать в версии 1.0 (КДЕ4, ау, кто ставил кеды4, есть там оно?)

Pidgin

Сайт программы: http://pidgin.im

GTK программа, минималистичный и функциональный интерфейс, что-то в нем есть такое :)

Jabber

Умеет почти все, но при этом нет обозревателя сервисов (или я не нашёл???)

ICQ

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

Очень много различных плагинов, реализующие разную полезную функциональность.

Вердикт

Sim фактически мёртвый проект, но при этом лучший клиент для работы с ICQ, многое можно от туда портировать в тот же Pidgin или Kopete, с jabber работать практически не умеет. Kopete и Pidgin примерно одинаковы в своих весовых категориях, практически так же не очень хорошо работают с ICQ (редактирование профиля, поиск (в pidgin только по e-mail), смену пароля), но Pidgin хренова работает с группами хранимыми на ICQ сервере в названии которых есть русские буковки, и практически одинаково работают с Jabber. Лично мой выбор склонился к сторону Pidgin, ибо уж очень сильно копетка завязана на КДЕ, да и код пиджина как-то легче для понимания, может что нить докурю со сменой паролей да профилем ICQ.

ЗЫ будет дополняться.