Архив: Технология создания плагинов

Здесь обсуждаются технические аспекты создания дополнений.
Аватара пользователя
Aarts
Сообщения: 3
Зарегистрирован: 19:26, 11.11.2010

Re: Технология создания плагинов

Сообщение Aarts »

@serg@ писал(а):
Aarts писал(а):А где документация по плагинам? Один раз я как-то я скачал её отсюда: http://www.commfort.com/ru/forum/viewto ... =28&t=6418 , самое первое сообщение в теме. Но теперь, когда я обновился до 5.03 и плагин который я долго и упорно писал перестал работать, я, естественно, начал искать доки. Доков не нашёл. Подскажите мне, слабозрячему, где найти обновленную документацию по плагинам. То бишь для версии 5.03.
Даже Яндексом не нашёл ОО
http://yandex.ru/yandsearch?text=%D0%B4 ... mmfort.com
----

И да, пользуясь случаем.
Мне нужно получить Текущего пользователя. Delphi. Функция PluginGetData. ID для получения 12. Что-то я вообще не знаю как это сделать. Всяко-разно пробовал — тщетно.
Подскажите, пожалуйста.
Всё лежит на прежнем месте, в шапке топика http://www.commfort.com/download/commfo ... doc_ru.zip.
Как на дельфи не знаю, но могу привести код с++, может поможет.

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

   AnsiString aData;//буфер
	int iSize = (*CommFortGetData)(12, dwID, NULL, NULL, NULL, NULL); //получаем объем буфера
	aData.SetLength(iSize);
	(*CommFortGetData)(12, dwID,aData.c_str(),iSize, NULL, NULL);//заполняем буфер
	int rOffset=0;
	fReadText(aData.c_str(),&rOffset);//тут имя твоего пользователя

Конечно помогло, спасибо :)
http://mediumeex.livejournal.com
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

Re: Технология создания плагинов

Сообщение Cilvay »

Покажите пожалуйста полный пример наложения ограничения, желательно код на делфи.
KGB
Сообщения: 659
Зарегистрирован: 08:54, 13.07.2010
Откуда: Чебоксары, Россия
Контактная информация:

Re: Технология создания плагинов

Сообщение KGB »

cilvay писал(а):Покажите пожалуйста полный пример наложения ограничения, желательно код на делфи.
Я вроде бы показывал такой пример :) Что именно не получается?
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

Re: Технология создания плагинов

Сообщение Cilvay »

Знаю. Но никак не выходит забанить.
Я прошу лишь кусок кода который тупо забанит кого-нить
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

Re: Технология создания плагинов

Сообщение Cilvay »

Я уже даже не понимаю. Толи это я напортачил со сроком бана, то еще где нибудь. В чате комфорт не предусмотрено никакого отладчика(
Но мне кажется срок бана. Я посылаю полное число - 1, бана не происходит. Так же и 0.3 и т.д. все формата double как вы и говорили
Artur
Сообщения: 23
Зарегистрирован: 15:26, 06.10.2010
Контактная информация:

Re: Технология создания плагинов

Сообщение Artur »

cilvay писал(а):Я уже даже не понимаю. Толи это я напортачил со сроком бана, то еще где нибудь. В чате комфорт не предусмотрено никакого отладчика(
Но мне кажется срок бана. Я посылаю полное число - 1, бана не происходит. Так же и 0.3 и т.д. все формата double как вы и говорили
Случаем не из отдельного ли потока пытаетесь?) я просто на этой ерунде довольно долго провисел...
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

Re: Технология создания плагинов

Сообщение Cilvay »

нет, в чистом плагине с одним основным потоком
KGB
Сообщения: 659
Зарегистрирован: 08:54, 13.07.2010
Откуда: Чебоксары, Россия
Контактная информация:

Re: Технология создания плагинов

Сообщение KGB »

Из исходника мафии:

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

procedure AddRestriction(Name: String; restrictiontype, identificationtype, anonymitytype : DWord; time : Double; ident : string; Channel : string; reason : string);
var
  msg: TBytes;
  i, len: DWord;
begin
  len:=Length(Name)*2+Length(Channel)*2+Length(ident)*2+Length(Reason)*2+36;
  SetLength(msg, len);
  len:=Length(Name);
  CopyMemory(@msg[0], @len, 4);
  CopyMemory(@msg[4], @Name[1], len*2);
  i:=4+len*2;
  CopyMemory(@msg[i], @identificationtype, 4);
  i:=i+4;
  len:=Length(ident);
  CopyMemory(@msg[i], @len, 4);
  CopyMemory(@msg[i+4], @ident[1], len*2);
  i:=i+4+len*2;
  CopyMemory(@msg[i], @restrictiontype, 4);
  i:=i+4;
  len:=Length(Channel);
  CopyMemory(@msg[i], @len, 4);
  CopyMemory(@msg[i+4], @Channel[1], len*2);
  i:=i+len*2+4;
  CopyMemory(@msg[i], @time, 8);
  i:=i+8;
  len:=Length(Reason);
  CopyMemory(@msg[i], @len, 4);
  CopyMemory(@msg[i+4], @Reason[1], len*2);
  i:=i+len*2+4;
  CopyMemory(@msg[i], @anonymitytype, 4);
  i:=i+4;
  CommfortProcess(dwPluginID, 1040, @msg[0], i);
end;
Попробуйте использовать её в плагине и вызывать с требуемыми параметрами (срок для начала установите 1).
ZigZagkms
Сообщения: 109
Зарегистрирован: 08:23, 11.12.2008
Откуда: Комсомольск-на-Амуре
Контактная информация:

Re: Технология создания плагинов

Сообщение ZigZagkms »

Вопрос к Maxim Mirgorodsky.

Скажите пожалуйста, как происходит фильтрация поступающих данных, полная или частичная, допустим если мы подадим в функцию неверную инфу как ее обрабатывает сервер?
Например, я посылаю серверу событие с ID 1001, а заместо блока данных подаю 4 байта (FF FF FF FF) (т.е. создаю ошибку, предоставляю ложную длину текста, причем невозможную) - плагин останавливается. Т.е. он словил исключение о невозможности прочитать данные или как там работает этот механизм?

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

Было бы здорово если бы сервер просто игнорировал все ошибочные данные, не останавливая плагин..
Забросил, всем спасибо, исходники раздаю кому надо https://github.com/ZigZagkms
@serg@
Сообщения: 702
Зарегистрирован: 14:50, 20.07.2009

Re: Технология создания плагинов

Сообщение @serg@ »

ZigZagkms писал(а):Вопрос к Maxim Mirgorodsky.

Скажите пожалуйста, как происходит фильтрация поступающих данных, полная или частичная, допустим если мы подадим в функцию неверную инфу как ее обрабатывает сервер?
Например, я посылаю серверу событие с ID 1001, а заместо блока данных подаю 4 байта (FF FF FF FF) (т.е. создаю ошибку, предоставляю ложную длину текста, причем невозможную) - плагин останавливается. Т.е. он словил исключение о невозможности прочитать данные или как там работает этот механизм?

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

Было бы здорово если бы сервер просто игнорировал все ошибочные данные, не останавливая плагин..
Коммфорт не может проверить FF FF FF FF это ошибка или действительно имя такой длинны, поэтому пытается прочитать все данные, при этом происходит ошибка прав доступа, идёт чтение ложных данных, и при попытке обработать естественно вызывается ошибка, которую тупо проигнорировать опасно. В этом случае лучше передавать в плане длинны заведомо корректные значения (что не так сложно), и следить внимательно за соблюдением порядка данных (что намного сложней), в этом случае коммфорту придётся отслеживать только корректность текста.
Но более точно тебе ответит естественно Maxim.
Аватара пользователя
SV
Сообщения: 797
Зарегистрирован: 00:11, 06.09.2010
Откуда: Киров

Re: Технология создания плагинов

Сообщение SV »

Подскажите как сделать кнопку настройки не активной до запуска плагина(delphi).
Аватара пользователя
-=SJ=-
Сообщения: 246
Зарегистрирован: 02:21, 06.04.2007

Re: Технология создания плагинов

Сообщение -=SJ=- »

anonim писал(а):Подскажите как сделать кнопку настройки не активной до запуска плагина(delphi).
Из плагина сделать кнопку настройки плагина неактивной нельзя (точнее можно используя winapi, но игра не стоит свеч), проще если плагин не запущен, то при нажатии на кнопку настройки выдавать сообщение о необходимости предварительного запуска плагина.
Кнопка настройки неактивна только когда не экспортируется функция соответствующая настройке программы. Но после инициализации плагина (при старте чата) кнопка своего состояния уже не меняет.
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

Re: Технология создания плагинов

Сообщение Cilvay »

Большое спасибо, KGB, бан заработал.
Cilvay
Сообщения: 816
Зарегистрирован: 14:55, 16.06.2008

Re: Технология создания плагинов

Сообщение Cilvay »

Уважаемые разработчики! Почему нельзя сделать в триал версии возможность банить? как я буду проверять плагин если таковая функция бана нету! Один раз кстати заработала и более не показывалась. Я не имею сервера и не покупал его, мне приходится просить об этом других админов. Почему вы это урезали?
KGB
Сообщения: 659
Зарегистрирован: 08:54, 13.07.2010
Откуда: Чебоксары, Россия
Контактная информация:

Re: Технология создания плагинов

Сообщение KGB »

cilvay писал(а):Уважаемые разработчики! Почему нельзя сделать в триал версии возможность банить? как я буду проверять плагин если таковая функция бана нету! Один раз кстати заработала и более не показывалась. Я не имею сервера и не покупал его, мне приходится просить об этом других админов. Почему вы это урезали?
У меня на триальной версии банит нормально. Ограничение только в сроке бана (всегда 5 мин).
Закрыто