Страница 13 из 26

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

Добавлено: 20:59, 11.11.2010
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);//тут имя твоего пользователя

Конечно помогло, спасибо :)

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

Добавлено: 21:00, 11.11.2010
Cilvay
Покажите пожалуйста полный пример наложения ограничения, желательно код на делфи.

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

Добавлено: 15:16, 12.11.2010
KGB
cilvay писал(а):Покажите пожалуйста полный пример наложения ограничения, желательно код на делфи.
Я вроде бы показывал такой пример :) Что именно не получается?

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

Добавлено: 18:05, 12.11.2010
Cilvay
Знаю. Но никак не выходит забанить.
Я прошу лишь кусок кода который тупо забанит кого-нить

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

Добавлено: 18:10, 12.11.2010
Cilvay
Я уже даже не понимаю. Толи это я напортачил со сроком бана, то еще где нибудь. В чате комфорт не предусмотрено никакого отладчика(
Но мне кажется срок бана. Я посылаю полное число - 1, бана не происходит. Так же и 0.3 и т.д. все формата double как вы и говорили

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

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

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

Добавлено: 18:31, 12.11.2010
Cilvay
нет, в чистом плагине с одним основным потоком

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

Добавлено: 18:36, 12.11.2010
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).

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

Добавлено: 11:00, 13.11.2010
ZigZagkms
Вопрос к Maxim Mirgorodsky.

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

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

Было бы здорово если бы сервер просто игнорировал все ошибочные данные, не останавливая плагин..

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

Добавлено: 11:47, 13.11.2010
@serg@
ZigZagkms писал(а):Вопрос к Maxim Mirgorodsky.

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

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

Было бы здорово если бы сервер просто игнорировал все ошибочные данные, не останавливая плагин..
Коммфорт не может проверить FF FF FF FF это ошибка или действительно имя такой длинны, поэтому пытается прочитать все данные, при этом происходит ошибка прав доступа, идёт чтение ложных данных, и при попытке обработать естественно вызывается ошибка, которую тупо проигнорировать опасно. В этом случае лучше передавать в плане длинны заведомо корректные значения (что не так сложно), и следить внимательно за соблюдением порядка данных (что намного сложней), в этом случае коммфорту придётся отслеживать только корректность текста.
Но более точно тебе ответит естественно Maxim.

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

Добавлено: 18:20, 13.11.2010
SV
Подскажите как сделать кнопку настройки не активной до запуска плагина(delphi).

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

Добавлено: 19:25, 13.11.2010
-=SJ=-
anonim писал(а):Подскажите как сделать кнопку настройки не активной до запуска плагина(delphi).
Из плагина сделать кнопку настройки плагина неактивной нельзя (точнее можно используя winapi, но игра не стоит свеч), проще если плагин не запущен, то при нажатии на кнопку настройки выдавать сообщение о необходимости предварительного запуска плагина.
Кнопка настройки неактивна только когда не экспортируется функция соответствующая настройке программы. Но после инициализации плагина (при старте чата) кнопка своего состояния уже не меняет.

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

Добавлено: 22:31, 13.11.2010
Cilvay
Большое спасибо, KGB, бан заработал.

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

Добавлено: 23:13, 13.11.2010
Cilvay
Уважаемые разработчики! Почему нельзя сделать в триал версии возможность банить? как я буду проверять плагин если таковая функция бана нету! Один раз кстати заработала и более не показывалась. Я не имею сервера и не покупал его, мне приходится просить об этом других админов. Почему вы это урезали?

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

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