AckMaster (с исходниками)

Больше
17 года 1 мес. назад - 15 года 7 мес. назад #1 от OverQuantum
OverQuantum создал тему: AckMaster (с исходниками)
Плагин AckMaster с исходниками на С++
Предназначен для оповещения пользователя о недоставке отправленных сообщений.

Принцип работы:
Если на отправляемое сообщение не поступает подтверждения о получении от контакта или сервера через определённый интервал
времени (задаётся настройками) после отправки, то вам приходит сообщение от UIN #2, содержащее время отправки
недошедшего сообщения, ник и UIN контакта.
Если на отправлеямое сообщение поступает сообщение об ошибке от сервера, то плагин извещает вас немедленно.
Также плагин извещает о переходе сервера в режим паузы.

Плагин осуществляет сплайсинг функций send() и recv() из wsock32.dll. Из-за технических ограничений, плагин не может работать одновременно с другими плагинами, осуществляющими сплайсинг тех же функций.

Плагин (скорее всего) не будет работать на 64-разрядных операционных системах.
Наблюдаются также проблемы с работой на 32-разрядной Vista.
Плагин (пока) не работает при включенном SSL.


В планах:
- Настройка номера, на котором "висит" плаг.
- Расширенное управление плагином через чат с UIN-ом

Последняя версия:
AckMaster 0.6.0 (with src)

(Зеркало на моём сайте)

Замечания о сплайсинге:
Сплайсинг, конечно, даёт долгожданную возможность анализа пакетов, которыми R&Q взаимодействует с ICQ-сервером.
Однако для полноценной работы с сервером этого недостаточно.
1) Плагин, осуществляющий сплайсинг, может быть только один.
При попытке второго сплайсинга и новый не удасться, и старый сломается.
2) В отправляемых пакетах присутствует последовательный номер, при неправильном номере сервер немедленно отрубает клиента.
Т.о. если плагин захочет добавлять или убивать отправляемые пакеты, ему придётся самостоятельно "пасти" этот номер.
Но при отключении такого плагина (и убирании сплайсинга), R&Q продолжит слать пакеты со своим номером, что практически всегда не понравится серверу.
3) Тоже самое и с получаемыми пакетами. Однако R&Q, по-моему, равнодушно относится к неправильному номеру.
4) R&Q вызывает функцию recv() (приём данных) только когда что-то реально придёт от сервера.
Следовательно, плагин не может самостоятельно "скормить" R&Q новый пакет. Плагину необходимо как-то выставить в сокете флаг, что данные пришли.
Как - я пока не смог придумать.
(Подробности: По всей видимости R&Q, а точнее сокет в дельфи, использует WSAWaitForMultipleEvents для ожидания события FD_READ.
Событие можно включить с помощью WSASetEvent, но надо знать handle объекта-события. Откуда брать handle - не понятно, разве что сплайсить ещё WSAEventSelect)

Максимум, что можно сделать безболезненно при текущем подходе - подменять пакеты один-к-одному, может быть при изменении содержимого и длины.

Для решения всех проблем необходимо, по всей видимости, делать хост-плагин, который будет подключать к себе другие плагины.
Или чтобы хост-плагин как-то извещал об ICQ-пакетах плагины, подключенные к R&Q.

Выражаю благодарность Sax-mms и Ms-Rem за предоставленный код сплайсинга на Delphi.

Questions are plentiful. Answers are few.
Последнее редактирование: 15 года 7 мес. назад пользователем OverQuantum. Причина: про SSL

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #2 от PRO
PRO ответил в теме Re:AckMaster (с исходниками)
Эх) все же лучше будет, если в крысе наконец реализуют обработку пакетов плагинами.. Это недолго, но сколько геморроя сразу исчезнет и сколько возможностей станет доступно для реализации плагинами..

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #3 от Danilus
Danilus ответил в теме Re:AckMaster (с исходниками)
Не могу скачать - \"Файл не найден\"...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад - 17 года 1 мес. назад #4 от dek
dek ответил в теме Re:AckMaster (с исходниками)
OverQuantum C ICQ-Fproxy 0.3.3 одновременно можно запускать? Там тоже анализ пакетов идёт. B)
Последнее редактирование: 17 года 1 мес. назад пользователем dek.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #5 от bass
bass ответил в теме Re:AckMaster (с исходниками)
Поправили

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #6 от OverQuantum
OverQuantum ответил в теме Re:AckMaster (с исходниками)
dek wrote:

OverQuantum C ICQ-Fproxy 0.3.3 одновременно можно запускать? Там тоже анализ пакетов идёт. B)

Можно, конечно.
В ICQ-Fproxy не сплайсинг, там просто копирование пакетов с одного подключения (R&Q - Fproxy) на другое (Fproxy - сервер).

Насколько я знаю, проблемы могут быть только с RnQExt, который трафик считает через сплайсинг.

Questions are plentiful. Answers are few.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #7 от SaxmmS
SaxmmS ответил в теме Re:AckMaster (с исходниками)
Про мой ICQLogger забыл :))

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #8 от dek
dek ответил в теме Re:AckMaster (с исходниками)
OverQuantum Эээ... За 5 часов лог распух до 28415 байт. Сколько же он весить будет через неделю? :S
З.Ы. Настройки не менялись, всё как в архиве лежало.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад - 17 года 1 мес. назад #9 от OverQuantum
OverQuantum ответил в теме Re:AckMaster (с исходниками)
dek wrote:

OverQuantum Эээ... За 5 часов лог распух до 28415 байт. Сколько же он весить будет через неделю? :S
З.Ы. Настройки не менялись, всё как в архиве лежало.

У меня около 3-х мегабайт в год. :)

Выключи, если не нужен. Вот так:
[code:1]LogLevel = 0[/code:1]
(в AckMaster.ini, который должен лежать в учётной записи)

Questions are plentiful. Answers are few.
Вложения:
Последнее редактирование: 17 года 1 мес. назад пользователем OverQuantum.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #10 от OverQuantum
OverQuantum ответил в теме Re:AckMaster (с исходниками)
Какой, однако, прикольный график времени доставки можно построить по логу. :woohoo:


Максимумы идут почти точно через 140 мс, рекорд (тут) - 135101 мс.

Questions are plentiful. Answers are few.
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #11 от rozoviy_kot
rozoviy_kot ответил в теме Re:AckMaster (с исходниками)
прикольный плагин, спасибо!! давно хотел такую штуку :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #12 от Danilus
Danilus ответил в теме Re:AckMaster (с исходниками)
Поставил плагин с исходными настройками.
При отправке сообщений с 1073 на 1073, каждый раз получаю сообщения следующего вида:

15.10.2007 14:14:30, AckMaster
[Unexpected ack msg from UIN 8AF7823F-8204000000000000]

В лог то же сообщение записано в виде:

15.10.2007 14:14:30.208 Ack msg from UIN 8AF7823F-8204000000000000 not found

При этом сообщения доходят без всяких трудностей.
С другими клиентами ничего такого не происходит.
Отчеты о недоставке на другие клиенты получаю, с ними все нормально.
Вопрос: в чем причина такого поведения?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #13 от OverQuantum
OverQuantum ответил в теме Re:AckMaster (с исходниками)
Danilus wrote:

При отправке сообщений с 1073 на 1073, каждый раз получаю сообщения следующего вида:
15.10.2007 14:14:30, AckMaster
[Unexpected ack msg from UIN 8AF7823F-8204000000000000]
...
Вопрос: в чем причина такого поведения?

Причина, скорее всего, в шифровании сообщений. На шифрованные сообщения, посланные в онлайн, приходит два ack-а - сначала от сервера, потом от клиента. Получив серверный ack плаг удаляет сообщение из перечня недоставленных и клиентский ack для него оказывается неожиданным.
Поведение плага постараюсь исправить. Пока лечится отключением шифрования. :)
Простейшее решение - не удалять сообщения из перечня, пока не придёт клиентский ack, но при большом RemoveTimeout это приведёт к дикому разбуханию перечня.

А вот почему сервер присылает ack на шифрованные - это большой вопрос.

Questions are plentiful. Answers are few.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #14 от SaxmmS
SaxmmS ответил в теме Re:AckMaster (с исходниками)
Скорее всего потому, что в шифрованном сообщении содержится неизвестный серверу GUID, который описывает структуру пакета сообщения.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #15 от dek
dek ответил в теме Re:AckMaster (с исходниками)
OverQuantum Есть возможность ведения логов только недоставленных сообщений? Зачем писать в лог доставленные. :S

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #16 от OverQuantum
OverQuantum ответил в теме Re:AckMaster (с исходниками)
dek wrote:

OverQuantum Есть возможность ведения логов только недоставленных сообщений?

В лог пишутся события отправки сообщений и получения подтверждений. Определение доставлено сообщение или нет - это уже другой уровень.
О недоставках происходит запись в хистори УИН-а #2, можно рассматривать эту хистори как лог недоставленных сообщений.

Зачем писать в лог доставленные. :S

Ну, например, чтобы видеть время доставки.
Можно отличать тех, кто сидит на ЖПРС и т.п.

Questions are plentiful. Answers are few.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад - 17 года 1 мес. назад #17 от dek
dek ответил в теме Re:AckMaster (с исходниками)
OverQuantum Ещё вопрос. INI файл должен лежать в папке плагинов или учётной записи (если есть вообще разница)?
З.Ы. И можно подробнее про это. B)

LogLevel (1) - Уровень детализации логов:
0 - не вести логи
1 - вести только AckMaster.log (содержащий информацию об отправке и доставке)
2 - вести ещё AckMaster.dlog, записывать туда только запуски и статистику
3 - также записывать в AckMaster.dlog информацию о сплайсинге
4 - также записывать в AckMaster.dlog информацию о перехвате пакетов
5 - также записывать в AckMaster.dlog информацию об обнаружении FLAP-пакетов
6 - также записывать в AckMaster.dlog типы SNAC-ов

Имеется ввиду, последующие включают в себя предыдущие. Пример: поставить 5, то и 4,3,2,1 тоже будут работать (вроде понятно сформулировал).
Последнее редактирование: 17 года 1 мес. назад пользователем dek. Причина: папускаю и уптаю уквы. :-)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #18 от OverQuantum
OverQuantum ответил в теме Re:AckMaster (с исходниками)
dek wrote:

OverQuantum Ещё вопрос. INI файл должен лежать в папке плагинов или учётной записи (если есть вообще разница)?

В учётной записи.
В каталог с плагинами плагин не обращается вообще.

З.Ы. И можно подробнее про это. B)Имеется ввиду, последующие включают в себя предыдущие. Пример: поставить 5, то и 4,3,2,1 тоже будут работать (вроде понятно сформулировал).

Именно так. Более высокий уровень включают в себя все предыдущие.
Если поставить 5, то будут вестись и AckMaster.log (куда будут записываться информация об отправке и доставке) и AckMaster.dlog, куда будут записываться запуски, статистика, информация о сплайсинге, о перехвате пакетов и об обнаружении FLAP-пакетов.

Questions are plentiful. Answers are few.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #19 от dek
dek ответил в теме Re:AckMaster (с исходниками)
OverQuantum Плаг пишет в лог 0spamers, очевидно из-за шифрования. Лог пухнет не по дням, а по часам. B)
[code:1] 30.10.2007 09:28:06, 2
[Unexpected ack msg from bass(525274) 99360D72-2000000000000000]

30.10.2007 09:29:40, 2
[Unexpected ack msg from bass(525274) 9936BF6D-2100000000000000]

30.10.2007 09:34:41, 2
[Unexpected ack msg from bass(525274) 993908F6-2200000000000000]

30.10.2007 09:35:56, 2
[Unexpected ack msg from bass(525274) 993993E7-2300000000000000]

30.10.2007 09:45:03, 2
[Unexpected ack msg from bass(525274) 993DB497-2400000000000000]

30.10.2007 09:45:33, 2
[Unexpected ack msg from bass(525274) 993DED03-2500000000000000]

30.10.2007 09:46:28, 2
[Unexpected ack msg from bass(525274) 993E4CD3-2600000000000000]

30.10.2007 09:48:59, 2
[Unexpected ack msg from bass(525274) 993F6140-2700000000000000]

[/code:1]

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
17 года 1 мес. назад #20 от OverQuantum
OverQuantum ответил в теме Re:AckMaster (с исходниками)
dek wrote:

OverQuantum Плаг пишет в лог 0spamers, очевидно из-за шифрования. Лог пухнет не по дням, а по часам. B)

Спокуха, уже делаю следующую версию. :)
Если очень неймётся, можешь потестить 0.4.9, линк кинул в приват.

Questions are plentiful. Answers are few.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: bassvazoozaDelphukdekRapid D
Время создания страницы: 0.583 секунд
Работает на Kunena форум