Общие сведения

Существует 2 вида программ-дополнений для CommFort client 4.10: плагины и программы.

Для связи программ с клиентом CommFort используется протокол UDP. Плагины связываются с CommFort путем экспорта функций.

Программы-дополнения

Основан механизм на приеме и передаче UDP пакетов. Для включения обработки и отправки пакетов в клиенте чата необходимо отредактировать в файле Config\UDPAddons.ini следующие строки:

-------------
[UDPAddon_X]
Enabled=1
IP=здесь указывается IP-адрес программы-надстройки
Port=здесь указывается порт программы-надстройки
-------------

Обратите внимание, CommFort client будет принимать и обрабатывать сообщения только с IP-адреса и порта, указанных в данном ini файле.

Узнать же адрес (в первую очередь порт), по которому необходимо отправлять UDP пакеты к клиенту чата можно по первому пакету, генерируемому программой CommFort client при подключении к серверу.

Плагины

В CommFort client 4.10 поддержка плагинов реализована в тестовом режиме.

Плагины представляют из себя обычные динамически загружаемые библиотеки (DLL). Для установки необходимо скопировать файл плагина в папку “Plugins”, созданную в каталоге с программой CommFort client и перезапустить программу. Плагины должны иметь расширение «cfcplug». Например “myplugin.cfcplug”. Очередность работы плагинов определяется по алфавиту (имен файлов).

Для функций плагина необходимо использовать соглашение _stdcall. Так же необходимо отключить декорирование имен экспортируемых функций.

Для ознакомления с типами экспортируемых функций, а так же общей структурой плагина используйте прилагающийся исходный код к плагину “Null”, поставляющийся вместе с данной инструкцией.

Описание состава сообщений

Для описания состава сообщений, отправляемых клиенту чата и принимаемых от него будут использоваться следующие шаблоны:

число(описание): целое десятичное 32 разрядное число. представляет из себя последовательность 4х байтов, содержащих данное число
текст(описание): текстовые данные. Представляют из себя число(длина текста в байтах) + сам текст
пользователь(описание): текст(Ник пользователя) + текст(IP-адрес пользователя)

При отправке сообщений программой-дополнением по протоколу UDP структура данных имеет следующий вид:

число(ID)+данные, описанные в таблице

Состав сообщений, отправляемых клиентом чата

Описание ID Структура данных Примечания
Подключение к серверу данного клиента, список пользователей которые уже присутствуют в чате 3 число(количество пользователей в чате) + пользователь()*количество пользователей в чате в данном случае пользователь() будет повторяться столько раз сколько пользователей в чате
Подключение пользователя 1 пользователь() -
Отключение пользователя 2 пользователь() -
Сообщение в канале 5 пользователь() + текст(название канала) + текст(опубликованное сообщение или состояние) -
Смена темы 6 пользователь() + текст(название канала) + текст(новая тема) -
Смена имени 7 пользователь() + текст(новый ник) -
Смена состояния 8 пользователь() + текст(новое состояние) -
Сообщение в приватный канал 10 пользователь() + текст(сообщение) -
Открытие менеджера каналов, ответ запрос списка каналов 11 число(количество общих каналов) + (текст(название канала)+число(количество посетителей)+текст(тема))*количество каналов В данном случае текст(название канала)+число(количество посетителей)+текст(тема) будут повторяться столько раз сколько общих каналов в чате
Получение сообщения 15 пользователь()+текст(дата и время)+текст(сообщение) -
Список объявлений 20 число(количество объявлений) + (число(уникальный идентификатор объявления)+пользователь()+текст(дата и время публикации)+текст(текст объявления))*количество объявений Отправляется при подключении клиента к серверу и в качестве ответа на сообщение с ID=80.
Новое объявление 21 число(уникальный идентификатор объявления)+пользователь()+текст(дата и время публикации)+текст(текст объявления) -
Объявление отредактировано 22 число(уникальный идентификатор объявления)+текст(новый текст объявления) -
Объявление удалено 23 число(уникальный идентификатор объявления) -
Список пользователей в канале 30 текст(название канала)+число(количество пользователей в канале)+пользователь()*количество пользователей в канале Отправляется при входе в общие каналы и в качестве ответа на сообщение с ID=90
Вход пользователя в канал 31 текст(название канала)+пользователь() -
Выход пользователя из канала 32 текст(название канала)+пользователь() -

Состав сообщений, принимаемых клиентом чата

Описание ID Структура данных Примечания
Опубликовать сообщение в канал 50 текст(название канала) + текст(сообщение) -
Опубликовать состояние в канал 51 текст(название канала) + текст(состояние) -
Наложить ограничение 52 число(тип ограничения) + число(тип идентификации) + число(тип анонимности) + число(время в минутах) + текст(учетная запись, либо IP-адрес, либо диапазон IP-адресов) + текст(название канала) + текст(причина ограничения) типы ограничения:
0 - Запретить доступ к чату,
1 - Запретить доступ к каналу,
2 - Запретить публикацию в канале,
3 - Запретить публикацию картинок,
4 - Запретить публикацию объявлений.

типы идентификации:
0 - учетная запись
1 - IP-адрес
2 - диапазон IP-адресов (пример: 192.168.0.0-192.168.0.255)

типы анонимности:
0 - обычное ограничение
1 - анонимное ограничение
Запросить список пользователей (клиент чата вернет сообщение с идентификатором 3) 60 -
Изменить тему канала 61 текст(название канала) + текст(новая тема) -
Изменить приветствие канала 62 текст(название канала) + текст(новое приветствие) -
Опубликовать сообщение в приват 63 пользователь() + текст(сообщение) Внимание! Данная команда работает только если клиент имеет право отправки многоадресных сообщений.
Опубликовать состояние в приват 64 пользователь() + текст(состояние) Внимание! Данная команда работает только если клиент имеет право отправки многоадресных сообщений.
Выйти из приватного канала 65 пользователь() -
Выйти из общего канала 66 текст (канал) -
Создать общий канал или подключиться 67 число(режим) + текст (канал) Режимы:
0 - не отображать в списке каналов/вход для всех
1 - отображать в списке каналов/вход для всех
2 - не отображать в списке каналов/вход только по приглашению
3 - отображать в списке каналов/вход только по приглашению
Запросить список каналов 68 -
Отправка сообщения 70 число(важность)+текст(имя получателя)+текст(сообщение) Важность:
0 - обычное сообщение
1 - важное сообщение

Внимание! Данная команда работает только если клиент имеет право отправки многоадресных сообщений.
Запросить список объявлений 80
Опубликовать объявление 81 число(срок на который публикуется объявление в минутах)+текст(текст объявления) текст объявления может быть не более 5000 символов
Удалить объявление 82 число(уникальный идентификатор объявления)
Запрос списка пользователей в канале 90 текст(название канала) можно получить список пользователей только в том канале в котором находится клиент