Страница 1 из 42

Технология создания плагинов и программ-дополнений

Добавлено: 13:40, 31.07.2008
Maxim Mirgorodsky
В данной теме просьба обсуждать только вопросы, касающиеся технических моментов в создании плагинов либо программ-дополнений к CommFort 4.хх. Все другие сообщения будут сразу же удаляться.

Добавлено: 13:50, 31.07.2008
Maxim Mirgorodsky
Дополнения для CommFort 4 делятся на 3 части:

1 Плагины для клиента CommFort.
2 Плагины для сервера CommFort.
3 Программы-дополнения для клиента CommFort.

Информация, необходимая для создания плагинов: http://www.commfort.com/download/commfo ... doc_ru.zip
Информация, необходимая для создания программ-дополнений: http://www.commfort.com/tmp/commfort_ad ... mation.zip

В данных архивах содержится документация, а так же примеры плагинов к клиенту и серверу выполненные в CodeGear C++ Builder 2009.

Добавлено: 06:11, 20.08.2008
~LONSDALE~
Maxim Mirgorodsky писал(а): Информация о технических аспектах создания плагинов к серверу и исходный код простого плагина на C++ Builder 2006 снабженный комментариями на русском языке: http://www.commfort.com/tmp/plugins_400_information.rar
А к 4.02 подойдёт? :)

Добавлено: 06:57, 20.08.2008
Maxim Mirgorodsky
Да.

Добавлено: 00:11, 22.08.2008
maza
Обьясните, пожалуйста, как написать плагин для регистрации в чате через домен?
:( тоесть по сетевым никам))

Добавлено: 16:47, 22.08.2008
realmagus
maza писал(а):Обьясните, пожалуйста, как написать плагин для регистрации в чате через домен?
:( тоесть по сетевым никам))
Никак, но можно написать синхронизатор базы пользователей комфорта с базой данных или автоматическую апрувалку акаунтов, с проверкой в базе данных. НО, так как пароль пользователя не передаёться дополнению, то сделать модуль аутентификации нельзя.

Добавлено: 19:20, 23.08.2008
realmagus
Разработчики, нужна ваша помощь.

Пробую написать плагин на делфи, инициализация проходит(как-бы). В логе появляэться сообщние "подозрение на атаку (тип 224 - N/A)" и при отправке любого сообщение плагином "Error in plugin '%V1%'. Plugin is disactivated." В списке пользователей юзер плагина не появляеться :(

Update:

Информация про плагин терерь считываеться коректно, но сообщения серверу так и не доходят и юзера в списке нету(учётку я такую сделал).
Сервер в лог пишет "ошибка приложения: "Main recursion" "

Update 2

Проблеммы скорее всего вызванны другой структурой типов(в памяти) в Делфи, разборки продолжаються..

Собственоо в чём просьба: напишите лоадер(на с++), который бы подключал длл, и давал возможность отослать возможные команды + посмотреть что ответил плагин, то дебажить не возможно.

Добавлено: 11:34, 27.08.2008
Maxim Mirgorodsky
realmagus

Пробую написать плагин на делфи, инициализация проходит(как-бы). В логе появляэться сообщние "подозрение на атаку (тип 224 - N/A)" и при отправке любого сообщение плагином "Error in plugin '%V1%'. Plugin is disactivated." В списке пользователей юзер плагина не появляеться

Это значит что в имени пользователя используются запрещенные символы, либо первый символ относится к знакам. Попробуйте более простое имя (состоящее из латинских символов).

Собственоо в чём просьба: напишите лоадер(на с++), который бы подключал длл, и давал возможность отослать возможные команды + посмотреть что ответил плагин, то дебажить не возможно.

Непростая работа, подумаем над этим.

Добавлено: 12:43, 27.08.2008
realmagus
Собственно, лоадер я уже написал сам(простенький,только на инициализацию).

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

Не могли бы вы рассказать подробно, как проходит инициализация в самой программе, может можно как-то увеличить количество сообщений о плагинах в логах?

Вопросы по С (ибо его я знаю только с универа):

1) Это что? Массив, указатель на массив?

Код: Выделить всё

 BYTE * bMessage 

2) Зачем нам эта процедура, ведь этот каллбек мы так и не используем?

Код: Выделить всё

typedef BOOL __stdcall (*typePremoderation)(DWORD dwMessageID, BYTE * bMessage, DWORD * dwMessageLength);

PS: Прийду домой выложу, то что написал. Но уже могу сказать что калбек функция у меня так и не заработала в делфи(собственно, подозрение на неверное описание аргументов).

Добавлено: 13:24, 27.08.2008
Maxim Mirgorodsky
1) Это что? Массив, указатель на массив?

Указатель на массив.

2) Зачем нам эта процедура, ведь этот каллбек мы так и не используем?

Забыли убрать данное объявление функции. Сейчас убрали, исходный код обновлен (единственное изменение - удалена эта ненужная строчка).

но в отличии от оного мой плагин заглушка не проходит инициализации(все значения и структуры возвращаются как в примере, резулт=0), то есть виртуальный юзер не появляется.

PS: Прийду домой выложу, то что написал. Но уже могу сказать что калбек функция у меня так и не заработала в делфи(собственно, подозрение на неверное описание аргументов).


Выложите сам плагин, посмотрим (лучше с исходным кодом).

Добавлено: 13:30, 27.08.2008
ququ_
Maxim Mirgorodsky писал(а):http://www.commfort.com/tmp/plugins_400_information.rar[/url]
Может будет возможность переписать Null плагин на дельфи.
Потому что многие пишут на этом языке.

Добавлено: 14:05, 27.08.2008
realmagus
ququ_ писал(а):
Maxim Mirgorodsky писал(а):http://www.commfort.com/tmp/plugins_400_information.rar[/url]
Может будет возможность переписать Null плагин на дельфи.
Потому что многие пишут на этом языке.
Чем, я собственно и занимаюсь. Если это сделают разработчики, то им мега респект.

Добавлено: 23:24, 27.08.2008
realmagus
http://ifolder.ru/7883614 -- plugin
http://ifolder.ru/7883610 -- dll loader

Для всех: делфи нулл-плагин не работает, если знаете в чём дело, то поделитесь со мной. Лоадер как бы работает, но без положительного ответа разработчиков, считать его неработоспособным. (больше не актуально)

UPDATE:
1. Меня сильно проглючило.... в делфи плагине для всех функций надо юзать stdcall тогда плагин загружаеться.
2. Callback так и не запахал :-(

UPDATE2:
1. Всё таки я не такой тупой...теперь всё работает, немного почищу код и выложу.

UPDATE3:
1. Линки обновил.
1. Код почистил, всё должно работать. Прошу администрацию проверить.

Код кривой и не красивый, ногами не копать.

Добавлено: 04:24, 28.08.2008
sonic
Вот написал небольшой пример плагинчика на делфи:
http://dump.ru/file_catalog/1025062

Re:

Добавлено: 13:43, 28.08.2008
realmagus
sonic писал(а):Вот написал небольшой пример плагинчика на делфи:
http://dump.ru/file_catalog/1025062
Красиво :-)

Есть 1 замечание: в интернете пишут что BOOL=LongBool, а не boolean.