Клиент для отправки сообщений из консоли

Задача - необходимо найти клиента для Jabber/XMPP который бы мог принимать в кач-ве параметров коммандной строки сервера,JID, пароль, адресата и сообщение и соответственно его отправлять.

Забыл написать - ОС Windows

Опубликовано FreemanRU@jabber.ru в пт, 2007-07-27 15:12. categories [ ]
Изображение пользователя kostix@jabber.ru.

jsend из Tkabber

Вероятно, сможет помочь скрипт jsend из состава Tkabber.

Для работы ему необходим рантайм Tcl.
Вероятно, так же потребуются прямые руки и желание читать приложенный howto.txt.

Также подобную утилиту наверняка можно сработать на базе, допустим, Net::XMPP.

--
xmpp:kostix@007spb.ru

tls151.dll

При запуске скрипта пишет, что не может загрузить библиотеку tls151.dll или те, от которых она зависит. Сам TKabber работает, how-to я вроде тоже прочитал. Путь до dll-ки выводит правильно. Собственно вопрос - как это побороть?
Полная ошибка: couldn't load library "C:/Tcl/lib/tls1.5.1/tls151.dll": this library or a dependent library could not be found in library path

Изображение пользователя kostix@jabber.ru.

Если путь до

Если путь до DLL'ки написан правильно, то значит реальным диагнозом является "...or a dependent library..."; сказать точно, что сделать с этой библиотекой, я не могу. Можно попробовать поставить depends и посмотреть от каких библиотек зависит tls151.dll.

Ещё проще, видимо, закомментировать строку package require tls в jsend.tcl, а в список аргументов добавить "-tls false", например:

set args {-from /tam -password lame -tls false}

--
xmpp:kostix@007spb.ru

Вроде все

Вроде все зависимости есть, всё равно не пашет. Без TLS не могу :( Буду рыть дальше ЗЫ НЕНАВИЖУ кросплатформу.

Изображение пользователя kostix@jabber.ru.

C:\>tclsh

Добрался до WinXP SP2, на котором стоит Tcl/Tk от AS 8.4.14; инфа о системе:

C:\>tclsh
% info pa
8.4.14
% package require tls
1.5.1
% package require mime
1.5.2
% package require Tclx
8.4
% package require sha1
2.0.3
% lappend auto_path $env(ProgramFiles)/Tkabber-SVN/Tkabber
C:/Tcl/lib/tcl8.4 C:/Tcl/lib C:/Tcl/lib/tcllib1.9 C:/Tcl/lib/tklib0.4 {C:/Docume
nts and Settings/Administrator/Teapot/repository/package/win32-ix86/lib} {C:/Doc
uments and Settings/Administrator/Teapot/repository/package/tcl/lib} C:/Tcl/lib/
tclx8.4 {C:\Program Files/Tkabber-SVN/Tkabber}
% package require jabberlib
0.10.0

Для запуска скрипта:

  1. Скопировал jsend.tcl в отдельный каталог;
  2. Создал там же .jsendrc.tcl;
  3. Вписал туда штатную строку с -from и -password;
  4. Вписал в jsend.tcl над первой строчкой с "package require..." следующее:
    lappend auto_path $env(ProgramFiles)/Tkabber-SVN/Tkabber
    

    — это путь (у меня) до каталога, в котором лежит jabberlib-tclxml. Строка нужна для того, чтобы пакетная система тикля нашла пакет jabberlib; альтернативное решение — скопировать jabberlib-tclxml в C:\Tcl\lib (или соответствующий каталог);

  5. Убедился, что C:\Tcl\bin находится у меня в PATH;
  6. Запустил как
    tclsh jsend.tcl  -body Yo!
    

    — получил сообщение.

P.S. (По поводу "кроссплатформы"): Даже если ты всю "кроссплатформу" забрызгаешь слюной презрения, это не помешает Ткабберу нормально работать как в win32, так и в *nix/X Window. Так что нечего не зеркало пенять... ©

И потом никто ж не заставляет: возьми, например, исходники Exodus'а и посиди неделю, пытаясь отковырять оттуда его jabberlib. Купи IP@Work! для дельфи за $400 и сделай свою прекрасную нифига-не-кроссплатформу — вариантов куча.

Или вот можно взять классы для PHP (ой, опять кроссплатформа). Тогда лучше что-нибудь для .NET. Хотя у них же тоже есть Mono — опять не подходит!

--
xmpp:kostix@007spb.ru

% info pa 8.4.15 % package


% info pa
8.4.15
% package require tls
couldn't load library "C:/Tcl/lib/tls1.5.1/tls151.dll": this library or a depend
ent library could not be found in library path
% package require mime
1.5.2
% package require Tclx
8.4
% package require sha1
2.0.3
% package require jabberlib
0.10.0


C:\Documents and Settings\Freeman>echo %PATH%
C:\Tcl\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C....{cut}....

В Path всё присутвует. Установлен ActiveTcl 8.4.15.0.
Можно было и не писать, что у Вас скрипт запустился - tls то подгрузился.

PS Да, я люблю откомпиленные приложения, как под Win, так и под *NIX. Работает в разы быстрее, в разы меньше головнй боли при установке. Что касается "поковырять исходники" - проще взять RFC и написать свой.

Изображение пользователя kostix@jabber.ru.

tcltls

Я достаточно давно занимаюсь "техподдержкой" Ткаббера, который активно использует tcltls. В частности, эта либа входит в Tkabber-Pack для Windows — никаких жалоб не поступало на невозможность её загрузить, я подчёркиваю: никаких, ни единой. Это означает, что что-то не в порядке с твоей системой. Однако мы ничего про неё не знаем: ни то, откуда взят этот пакет tcltls, ни то, какая версия виндов используется.

Особенно это странно в свете того, что сборка tcltls, доступная на сорсфорже, линкуется с OpenSSL статически, то есть не зависит ни от чего, кроме штатных виндовских DLL'ек.

P.S.
Про "в разы быстрее" и прочее я комментировать не буду. Я считаю, что ты неправ, но мы уходим от темы. Единственное, что я должен заметить: если бы действительно было бы проще "взять RFC и написать свой", то, вероятно, завались было бы уже таких своих решений.

Да, исходники я патчить не предлагал. Мне было проще написать строчку в скрипт, чем ставить jabberlib в правильное место. Это не означает, что так должен сделать каждый.

--
xmpp:kostix@007spb.ru

решение - взять

решение - взять с Sourceforge версию 1.5.0.
http://sourceforge.net/project/showfiles.php?group_id=13248&package_id=21836
удалить каталог C:/Tcl/lib/tls1.5.1 и распаковать содержимое скачанного файла в каталог C:/Tcl/lib

По поводу 1.5.1 - если tclsh запустить в C:/Tcl/lib/tls1.5.1 , и сделать
% package require tls
то dll-ка загрузится...

Изображение пользователя kostix@jabber.ru.

Решение проблемы с TLS

Оказался баг в Tcl 8.4.15, дистрибутив которого от ActiveState, как выяснилось, начиная с этой версии включает tls.

Проблема состоит в том, что DLL'ка этого модуля динамически слинкована с файлами библиотеки OpenSSL, а загрузчик модуля содержит ошибку, которая не позволяет ему найти нужные файлы от OpenSSL.

Два решения проблемы приведены здесь.

Мейнтейнер пакета TLS в данном дистрибутиве принял патч; обновление, видимо, появится в 8.4.16.

--
xmpp:kostix@007spb.ru

Изображение пользователя kostix@jabber.ru.

Решение на перле

Вот — решение на Perl

--
xmpp:kostix@007spb.ru

Изображение пользователя webmaster.

сможешь

сможешь оформить "Клиент для отправки сообщений из консоли" в виде заметки для размещения на главной странице?

Изображение пользователя kostix@jabber.ru.

Разумно

Мысль верная. Только нужно подойти к вопросу обстоятельно, а это требует некоторого времени на подготовку. Кроме того, обсуждаемый скрипт вполне можно "завернуть", сделав из него самостоятельный win32-"экзешник" чтобы больше не было таких страдальцев, как автор оригинального поста.

Это тоже требует некоторого времени. В общем, как только, так — сразу.

--
xmpp:kostix@007spb.ru

Изображение пользователя juri4@jabber.ru.

С экзешником

С экзешником очень хорошая идея.