Tkabber Wiki

ТЗ по управлению через параметры командной строки
Login

Материал из Tkabber Wiki.

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

— 20:20, 21 сентября 2007 (MSD)

Содержание

Зачем это нужно

Для двух вещей:

Межпроцессное взаимодействие

Для работы такой функции есстесственно нужно межпроцессное взаимодействие (IPC). Тикль предоставляет такую функцию: команда send. С помощью этой функции можно вызвать любую tcl-функцию в другом tcl-процессе и получить результат.

В файле xmppmime.tcl уже реализована похожая функциональност. Это реализация обработки xmpp-mime файлов.

Суть такого IPC в следующем. Есть принимающая и передающая сторона. Стандартно-запущенный ткаббер — принимающая сторона. Когда ткаббер запускается с параметром -mime, активизируется передающая функция, которая пытается найти запущенный ткаббер и вызвать в нем обработку файла с помощью send. Если удается то передающий процесс завершается. В случае ошибок или отсутствия принимающего процесса, выполняется обычный запуск ткаббера и обработка mime-файла.

Несколько соединений, несколько клиентов

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

Предлагаю следующее решение: Перед выполнением команды, передающая сторона собирает со всех запущенных экземпляров Ткаббера списки установленных соединений (JID-ы) и потом на основе правил изложенных ниже самостоятельно определяет какое соединение надо использовать и вызывает обработку только там, где надо. Т.е. эта логика на передающей стороне.

Алгоритмы

Алгоритмы выполнения команд и установки PEP-состояний, как я их представляю, очень отличаются и поэтому они будут освещены в разных разделах. Для каждой из этих двух частей будут затронуты вопросы кодировок, обработки и экранирования параметров командной строки, что делать если запущенно несколько ткабберов, и в каждом по несколько соединений.

Выполнение XMPP-URI команд

Примеры URI:

Полный список: http://www.xmpp.org/registrar/querytypes.html

Отличительные особенности алгоритма:

Экранирование

Экранирование в URI уже есть. Так как экранируются и пробелы, то URI скорее всего будет в одном параметре командной строки. Точнее должен быть. Если пробелы не экранировались, то это проблемы на вызывающей стороне — пусть берут в кавычки.

Кодировки

Заэкранированный текст (например поле subject=....) может содержать текст в любой кодировке, и зависит это, получается, от сайта, на котором была размещена ссылка. Это проблема, которую пока не знаю как решить. Возможно браузер может автоматом все перекодировать в utf-8? (!) Сделать: проверить

Несколько соединений

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

Управление PEP-статусами

Отличительные особенности:

Экранирование

Кодировки

Несколько соединений

См. также