jabsh (Jabber Shell)

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

Модератор: Модераторы разделов

Ответить
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

jabsh

Сообщение drag0n »

jabsh - программа для управления компьютером при помощи протокола XMPP и созданной на его основе IM-сети Jabber.
Создана была под влиянием безысходности - провайдер закрыл меня за NATом, а использовать dyndns.org не получилось - IP менялся практически каждые несколько секунд и в итоге меня забанили ((. Собственно поэтому я и придумал jabsh.
Программа написана на C++, для работы с протоколом XMPP используется библиотеку gloox. Возможно исполнять любые консольные команды, за исключением тех, которые ждут ввода от пользователя. Размер вывода команды не ограничен.
Для работы нужно указать 2 JID'a: 1 - JID на который вы будете посылать консольные команды, 2 - JID с которого jabsh будет ожидать консольных команд. Любые сообщение, посланные не с JID #2 отбрасываются. JID'ы указываются в конфиге.
Программа устанавливается через make; make install. autotools я не использовал. Перед использованием подредактировать под себя конфигурационный файл - /usr/local/etc/jabsh.rc!
На данный момент есть одна проблема - реализовать обработчики исключений в соответствии с документацией, поставляемой с библиотекой, у меня не получилось. Причины неизвестны :(. Подробне - см. файлы BUGS, jabber.cpp:117
Просьба слать предложения по улучшению и исправлению ошибок на мыло разработчику.

Страница проекта: http://jabsh.sourceforge.net/
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.
Контактная информация:

Re: jabsh

Сообщение eduard_pustobaev »

Вроде было уже что-то такое. По крайней мере на лоре новость проскакивала.
Или это об этом проекте было?
В дисгармонии со вселенной.
Спасибо сказали:
time2die
Сообщения: 29
ОС: Microsoft Vista Home basic

Re: jabsh

Сообщение time2die »

нет, не про этот, был похожий проект, но его последний релиз был в 2004 году.
Спасибо сказали:
Аватара пользователя
diesel
Бывший модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian
Контактная информация:

Re: jabsh

Сообщение diesel »

В "проектах..." самое место этой теме мне кажется.
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10
Контактная информация:

Re: jabsh

Сообщение BlackStar »

time2die писал(а):
22.03.2008 01:28
нет не про этот,был похожий проект но его последний релиз был 2004 году

Jabber-Shell 20080315
LightLang Team
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

Re: jabsh

Сообщение drag0n »

Гы. Когда я начинал работу над jabsh, тот проект был еще не очень. Например использование временного файла и обрезание вывода команды до 4 Кб меня не устраивали.
Логирование пользовательских команд.

Этого у меня еще нет. :(
В планах реализации тоже есть закачка и скачка файлов...
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
arch
Сообщения: 74
ОС: freebsd/arch

Re: jabsh

Сообщение arch »

исключением тех, которые ждут ввода от пользователя.

Можно попробывать запускать такие программы в псевдо-терминальном устройстве, хотя врятли прокатит - глюков много будет.
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

Re: jabsh

Сообщение drag0n »

ftp://89.223.36.40/WTF_not_distr/jsh/
Еще одна ссылка для скачивания.
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
arch
Сообщения: 74
ОС: freebsd/arch

Re: jabsh

Сообщение arch »

Не хочу вмешиваться в чужой проект(вы уж меня простите:) ), но на досуге набросал нечто аналогичное, но работающие через псевдо-терминал. Работает как самый настоящий терминал(т.е. полноценно перемещается по директориям через cd , выполняет скрипты(ввод пользовательских данных есть, но работает через раз) и т.д. ).

Если не увидели вывода на свою комманду, то отправте сообщение "---"(типо как page down).
Единственный критический баг, при попытке передать цветной текст, программу вышибает(проблема в gloox).


slil.ru/25612484
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.
Контактная информация:

Re: jabsh

Сообщение eduard_pustobaev »

Да, кстати по сабжу забыл высказаться. Вещь нужная.
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

Re: jabsh

Сообщение drag0n »

Заведена страничка проекта на SourceForge: http://sourceforge.net/projects/jabsh/.
Сайт проекта (jabsh.sourceforge.net) пока находится в разработке.
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

Re: jabsh

Сообщение drag0n »

Вышла новая версия jabsh: jabsh-0.2-beta. Страничка проекта - jabsh.sourceforge.net.
Краткий список нововведений:
1) Теперь пишется лог файл.
2) Если к нам лезут не с админского JID'а то оповещаем об этом админа.
3) jabsh может работать как демон.
4) Написана man-страница для программы.
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

Re: jabsh

Сообщение drag0n »

Вышла новая версия jabsh: jabsh-0.3-beta. Страничка проекта - jabsh.sourceforge.net.
Краткий список нововведений:
1) Для ведения логов используется демон syslogd. Лог jabsh находится в /var/log/user.log
2) Теперь соединение от jabsh до jabber сервера шифруется по SSL или TLS
3) Найден и исправлен несколько нерациональный код:).
4) Доступен раздел FAQ на сайте, в который включены вопросы, возникшие у пользователя narendra sisodiya. Вместе с дистрибутивом также поставляется краткое руководство по jabsh (на английском). См. файл README.

Остальное читайте в ChangeLog'е.
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.
Контактная информация:

Re: jabsh

Сообщение eduard_pustobaev »

Отлично.
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
Abdurahman
Сообщения: 8
ОС: OpenSUSE 11.0
Контактная информация:

Re: jabsh

Сообщение Abdurahman »

Код:

g++ -c -DJABSH_VERSION=\"0.3\" -DOS_VERSION=\"Linux\" -I./include ./src/main.cpp ./src/jabber.cpp ./src/config.cpp ./src/shell.cpp ./src/ftransfer.cpp In file included from ./src/../include/jabber.h:36, from ./src/main.cpp:31: ./src/../include/../include/ftransfer.h:12:31: error: gloox/siprofileft.h: No such file or directory ./src/../include/../include/ftransfer.h:13:38: error: gloox/siprofilefthandler.h: No such file or directory ./src/../include/../include/ftransfer.h:14:36: error: gloox/socks5bytestream.h: No such file or directory ./src/../include/../include/ftransfer.h:15:29: error: gloox/simanager.h: No such file or directory ./src/../include/../include/ftransfer.h:21: ошибка: expected class-name before ‘{’ token ./src/../include/../include/ftransfer.h:37: ошибка: ‘SOCKS5Bytestream’ не был декларирован ./src/../include/../include/ftransfer.h:38: ошибка: ‘SIProfileFT’ не был декларирован ./src/../include/../include/ftransfer.h:41: ошибка: ISO C++ запрещает декларации ‘SIProfileFT’ без типа ./src/../include/../include/ftransfer.h:41: ошибка: expected ‘;’ before ‘*’ token ./src/../include/jabber.h:45: ошибка: ‘MessageSession’ не был декларирован ./src/../include/jabber.h:54: ошибка: ISO C++ запрещает декларации ‘SIProfileFT’ без типа ./src/../include/jabber.h:54: ошибка: expected ‘;’ before ‘*’ token ./src/main.cpp: In function ‘int main(int, char**)’: ./src/main.cpp:143: ошибка: cannot declare variable ‘b’ to be of abstract type ‘JSH’ ./src/../include/jabber.h:38: замечание: because the following virtual functions are pure within ‘JSH’: /usr/include/gloox/messagehandler.h:46: замечание: virtual void gloox::MessageHandler::handleMessage(gloox::Stanza*) In file included from ./src/../include/jabber.h:36, from ./src/jabber.cpp:20: ./src/../include/../include/ftransfer.h:12:31: error: gloox/siprofileft.h: No such file or directory ./src/../include/../include/ftransfer.h:13:38: error: gloox/siprofilefthandler.h: No such file or directory ./src/../include/../include/ftransfer.h:14:36: error: gloox/socks5bytestream.h: No such file or directory ./src/../include/../include/ftransfer.h:15:29: error: gloox/simanager.h: No such file or directory ./src/../include/../include/ftransfer.h:21: ошибка: expected class-name before ‘{’ token ./src/../include/../include/ftransfer.h:37: ошибка: ‘SOCKS5Bytestream’ не был декларирован ./src/../include/../include/ftransfer.h:38: ошибка: ‘SIProfileFT’ не был декларирован ./src/../include/../include/ftransfer.h:41: ошибка: ISO C++ запрещает декларации ‘SIProfileFT’ без типа ./src/../include/../include/ftransfer.h:41: ошибка: expected ‘;’ before ‘*’ token ./src/../include/jabber.h:45: ошибка: ‘MessageSession’ не был декларирован ./src/../include/jabber.h:54: ошибка: ISO C++ запрещает декларации ‘SIProfileFT’ без типа ./src/../include/jabber.h:54: ошибка: expected ‘;’ before ‘*’ token ./src/jabber.cpp: In member function ‘void JSH::JSHConnect()’: ./src/jabber.cpp:52: ошибка: нет декларации ‘ft’ в этой области видимости ./src/jabber.cpp:52: ошибка: expected type-specifier before ‘SIProfileFT’ ./src/jabber.cpp:52: ошибка: expected `;' before ‘SIProfileFT’ ./src/jabber.cpp:56: ошибка: ‘class gloox::Client’ has no member named ‘setPresence’ ./src/jabber.cpp:65: ошибка: type ‘<type error>’ argument given to ‘delete’, expected pointer ./src/jabber.cpp: At global scope: ./src/jabber.cpp:97: ошибка: ‘MessageSession’ не был декларирован ./src/jabber.cpp: In member function ‘void JSH::handleMessage(gloox::Stanza*, int*)’: ./src/jabber.cpp:120: предупреждение: converting to ‘int’ from ‘double’ ./src/jabber.cpp: In member function ‘virtual void JSH::onDisconnect(gloox::ConnectionError)’: ./src/jabber.cpp:183: ошибка: нет декларации ‘ConnCompressionFailed’ в этой области видимости ./src/jabber.cpp:199: ошибка: нет декларации ‘ConnDnsError’ в этой области видимости ./src/jabber.cpp:202: ошибка: нет декларации ‘ConnConnectionRefused’ в этой области видимости ./src/jabber.cpp:206: ошибка: нет декларации ‘ConnParseError’ в этой области видимости ./src/jabber.cpp:214: ошибка: нет декларации ‘ConnProxyNoSupportedAuth’ в этой области видимости ./src/jabber.cpp:218: ошибка: нет декларации ‘ConnProxyAuthFailed’ в этой области видимости ./src/jabber.cpp:222: ошибка: нет декларации ‘ConnProxyAuthRequired’ в этой области видимости ./src/jabber.cpp:230: ошибка: нет декларации ‘ConnStreamVersionError’ в этой области видимости ./src/config.cpp: In constructor ‘ConfigReader::ConfigReader()’: ./src/config.cpp:47: предупреждение: NULL в арифметическом выражении In file included from ./src/ftransfer.cpp:6: ./src/../include/ftransfer.h:12:31: error: gloox/siprofileft.h: No such file or directory ./src/../include/ftransfer.h:13:38: error: gloox/siprofilefthandler.h: No such file or directory ./src/../include/ftransfer.h:14:36: error: gloox/socks5bytestream.h: No such file or directory ./src/../include/ftransfer.h:15:29: error: gloox/simanager.h: No such file or directory ./src/../include/ftransfer.h:21: ошибка: expected class-name before ‘{’ token ./src/../include/ftransfer.h:37: ошибка: ‘SOCKS5Bytestream’ не был декларирован ./src/../include/ftransfer.h:38: ошибка: ‘SIProfileFT’ не был декларирован ./src/../include/ftransfer.h:41: ошибка: ISO C++ запрещает декларации ‘SIProfileFT’ без типа ./src/../include/ftransfer.h:41: ошибка: expected ‘;’ before ‘*’ token ./src/ftransfer.cpp: In member function ‘void JSHFTHandler::handleFTRequest(const gloox::JID&, const std::string&, const std::string&, const std::string&, long int, const std::string&, const std::string&, const std::string&, const std::string&, int, long int, long int)’: ./src/ftransfer.cpp:29: ошибка: нет декларации ‘ft’ в этой области видимости ./src/ftransfer.cpp:29: ошибка: ‘SIManager’ не был декларирован ./src/ftransfer.cpp:33: ошибка: нет декларации ‘ft’ в этой области видимости ./src/ftransfer.cpp: At global scope: ./src/ftransfer.cpp:47: ошибка: variable or field ‘handleFTSOCKS5Bytestream’ declared void ./src/ftransfer.cpp:47: ошибка: ‘int JSHFTHandler::handleFTSOCKS5Bytestream’ is not a static member of ‘class JSHFTHandler’ ./src/ftransfer.cpp:47: ошибка: нет декларации ‘SOCKS5Bytestream’ в этой области видимости ./src/ftransfer.cpp:47: ошибка: нет декларации ‘s5b’ в этой области видимости ./src/ftransfer.cpp:47: ошибка: expected ‘,’ or ‘;’ before ‘{’ token ./src/ftransfer.cpp:53: ошибка: variable or field ‘setSIProfileFTHandler’ declared void ./src/ftransfer.cpp:53: ошибка: ‘int JSHFTHandler::setSIProfileFTHandler’ is not a static member of ‘class JSHFTHandler’ ./src/ftransfer.cpp:53: ошибка: нет декларации ‘SIProfileFT’ в этой области видимости ./src/ftransfer.cpp:53: ошибка: нет декларации ‘spfft’ в этой области видимости ./src/ftransfer.cpp:53: ошибка: expected ‘,’ or ‘;’ before ‘{’ token make: *** [jabsh_o] Ошибка 1


Бунта Gutsy
libgloox5 0.8.8~sic-1
libgloox-dev

Что ему ещё не хватает?
IN GOD WE TRUST
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

Re: jabsh

Сообщение drag0n »

Читайте внимательнее информацию на сайте - jabsh-0.3 работает только с libgloox-0.9.9.5. На совместимость с остальными версиями libgloox не проверялось, особенно учитывая, что там каждый раз что-нибудь да поменяют.
Скачать libgloox-0.9.9.5 можно здесь.
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Surzh
Сообщения: 14
ОС: Debian Etch R3

Re: jabsh

Сообщение Surzh »

как развитие идеи... а зачем создавать велосипед?
Например, можно абстрагироваться от взаимодействия с непосредственно системой...

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

и сухой остаток от такой архитектуры: вы получаете полнофункциональный телнет(или другой любимый протокол) и не надо мучаться.. Вы просто концентрируетесь на конкретной маленькой задаче... а именно передаче данных между локальным соединением и сервером Jabbera.. проще и более резиново
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

Re: jabsh

Сообщение drag0n »

Идея хороша. Но! К сожалению это трудно провернуть на моем Siemens C75, а ноута у меня пока нет :(. А иногда возникает надобность порулить системой. jabsh создавалась только ради этого - управлять компьютером, имея только телефон и Bombus (прочие telnet и ssh клиенты на нем были неудобны мне).
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

Re: jabsh

Сообщение drag0n »

Добавил файлы, с разрабатываемой в данный момент версией jabsh, в SVN репозиторий (https://jabsh.svn.sourceforge.net/svnroot/jabsh).
Добавил новости.
Обновлю сайт, когда будет готова jabsh-0.4-alpha.
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

Re: jabsh

Сообщение drag0n »

jabsh теперь компилируется при помощи autotools. Буду очень рад тем, кто проверит насколько правильно я это сделал.
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Аватара пользователя
oper777
Сообщения: 411
ОС: gentoo
Контактная информация:

Re: jabsh

Сообщение oper777 »

drag0n писал(а):
08.09.2008 22:12
jabsh теперь компилируется при помощи autotools. Буду очень рад тем, кто проверит насколько правильно я это сделал.


У меня вроде получилось. Только пример конфига не установился автоматически. Планируется ли поддержка http-proxy ?

p.s. могу поделиться rpm-пакетом для mandriva 2008.1
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

Re: jabsh

Сообщение drag0n »

Только пример конфига не установился автоматически.

Исправил. Устанавливается в /usr/local/etc/jabsh.rc из ./doc/jabsh.rc

p.s. могу поделиться rpm-пакетом для mandriva 2008.1

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

Планируется ли поддержка http-proxy ?

Пока нет.
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Аватара пользователя
drag0n
Сообщения: 156
Статус: Дракон-линуксоид
ОС: Slackware Linux
Контактная информация:

Re: jabsh

Сообщение drag0n »

Вышла новая версия jabsh: jabsh-0.4-alpha. Как ясно из названия - работает, но может глючить :).
Краткий список нововведений:
1) Для сборки jabsh теперь используются autotools.
2) Почищен исходный код (полезно заглядывать в свои программы через полгода :)) и документация вместе с комментами в коде.
3) Переработан код, отвечающий за обработку пользовательских команд. Теперь вы можете использовать команды, ждущие ввода от пользователя, без ущерба для здоровья. Например: nslookup или sudo.
4) Убрал посылку сообщения об ошибке, когда от пользователя приходило пустое сообщение - например когда джаббер клиент посылал сообщение о том, что пользователь что-то печатает (указал на сей баг некто Longer).
5) За ненадобностью, убрал много встроенных команд. Оставил только одну - "!exit".

Остальное читайте в ChangeLog'е.
Страничка проекта - jabsh.sourceforge.net.
Скачать последнюю версию jabsh можно здесь: http://surfnet.dl.sourceforge.net/sourcefo...4-alpha.tar.bz2 или взять ее из SVN.
После каталога /etc понимаешь, что реестр - место, откуда нормальными не возвращаются.
Спасибо сказали:
Ответить