AckMaster (с исходниками)
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
Предназначен для оповещения пользователя о недоставке отправленных сообщений.
Принцип работы:
Если на отправляемое сообщение не поступает подтверждения о получении от контакта или сервера через определённый интервал
времени (задаётся настройками) после отправки, то вам приходит сообщение от 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.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- PRO
- Не в сети
- Elite Member
- Сообщений: 300
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Danilus
- Не в сети
- New Member
- Сообщений: 12
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- dek
- Не в сети
- Moderator
- Сообщений: 2528
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- bass
- Не в сети
- Administrator
- Сообщений: 811
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
Можно, конечно.OverQuantum C ICQ-Fproxy 0.3.3 одновременно можно запускать? Там тоже анализ пакетов идёт.
В ICQ-Fproxy не сплайсинг, там просто копирование пакетов с одного подключения (R&Q - Fproxy) на другое (Fproxy - сервер).
Насколько я знаю, проблемы могут быть только с RnQExt, который трафик считает через сплайсинг.
Questions are plentiful. Answers are few.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- SaxmmS
- Не в сети
- Junior Member
- Сообщений: 27
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- dek
- Не в сети
- Moderator
- Сообщений: 2528
- Спасибо получено: 0
З.Ы. Настройки не менялись, всё как в архиве лежало.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
У меня около 3-х мегабайт в год.OverQuantum Эээ... За 5 часов лог распух до 28415 байт. Сколько же он весить будет через неделю?
З.Ы. Настройки не менялись, всё как в архиве лежало.
Выключи, если не нужен. Вот так:
[code:1]LogLevel = 0[/code:1]
(в AckMaster.ini, который должен лежать в учётной записи)
Questions are plentiful. Answers are few.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
Максимумы идут почти точно через 140 мс, рекорд (тут) - 135101 мс.
Questions are plentiful. Answers are few.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- rozoviy_kot
- Не в сети
- Senior Member
- Сообщений: 41
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Danilus
- Не в сети
- New Member
- Сообщений: 12
- Спасибо получено: 0
При отправке сообщений с 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
При этом сообщения доходят без всяких трудностей.
С другими клиентами ничего такого не происходит.
Отчеты о недоставке на другие клиенты получаю, с ними все нормально.
Вопрос: в чем причина такого поведения?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
Причина, скорее всего, в шифровании сообщений. На шифрованные сообщения, посланные в онлайн, приходит два ack-а - сначала от сервера, потом от клиента. Получив серверный ack плаг удаляет сообщение из перечня недоставленных и клиентский ack для него оказывается неожиданным.При отправке сообщений с 1073 на 1073, каждый раз получаю сообщения следующего вида:
15.10.2007 14:14:30, AckMaster
[Unexpected ack msg from UIN 8AF7823F-8204000000000000]
...
Вопрос: в чем причина такого поведения?
Поведение плага постараюсь исправить. Пока лечится отключением шифрования.
Простейшее решение - не удалять сообщения из перечня, пока не придёт клиентский ack, но при большом RemoveTimeout это приведёт к дикому разбуханию перечня.
А вот почему сервер присылает ack на шифрованные - это большой вопрос.
Questions are plentiful. Answers are few.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- SaxmmS
- Не в сети
- Junior Member
- Сообщений: 27
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- dek
- Не в сети
- Moderator
- Сообщений: 2528
- Спасибо получено: 0
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
В лог пишутся события отправки сообщений и получения подтверждений. Определение доставлено сообщение или нет - это уже другой уровень.OverQuantum Есть возможность ведения логов только недоставленных сообщений?
О недоставках происходит запись в хистори УИН-а #2, можно рассматривать эту хистори как лог недоставленных сообщений.
Ну, например, чтобы видеть время доставки.Зачем писать в лог доставленные.
Можно отличать тех, кто сидит на ЖПРС и т.п.
Questions are plentiful. Answers are few.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- dek
- Не в сети
- Moderator
- Сообщений: 2528
- Спасибо получено: 0
З.Ы. И можно подробнее про это.
Имеется ввиду, последующие включают в себя предыдущие. Пример: поставить 5, то и 4,3,2,1 тоже будут работать (вроде понятно сформулировал).LogLevel (1) - Уровень детализации логов:
0 - не вести логи
1 - вести только AckMaster.log (содержащий информацию об отправке и доставке)
2 - вести ещё AckMaster.dlog, записывать туда только запуски и статистику
3 - также записывать в AckMaster.dlog информацию о сплайсинге
4 - также записывать в AckMaster.dlog информацию о перехвате пакетов
5 - также записывать в AckMaster.dlog информацию об обнаружении FLAP-пакетов
6 - также записывать в AckMaster.dlog типы SNAC-ов
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
В учётной записи.OverQuantum Ещё вопрос. INI файл должен лежать в папке плагинов или учётной записи (если есть вообще разница)?
В каталог с плагинами плагин не обращается вообще.
Именно так. Более высокий уровень включают в себя все предыдущие.З.Ы. И можно подробнее про это. Имеется ввиду, последующие включают в себя предыдущие. Пример: поставить 5, то и 4,3,2,1 тоже будут работать (вроде понятно сформулировал).
Если поставить 5, то будут вестись и AckMaster.log (куда будут записываться информация об отправке и доставке) и AckMaster.dlog, куда будут записываться запуски, статистика, информация о сплайсинге, о перехвате пакетов и об обнаружении FLAP-пакетов.
Questions are plentiful. Answers are few.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- dek
- Не в сети
- Moderator
- Сообщений: 2528
- Спасибо получено: 0
[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]
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- OverQuantum
- Автор темы
- Не в сети
- Platinum Member
Спокуха, уже делаю следующую версию.OverQuantum Плаг пишет в лог 0spamers, очевидно из-за шифрования. Лог пухнет не по дням, а по часам.
Если очень неймётся, можешь потестить 0.4.9, линк кинул в приват.
Questions are plentiful. Answers are few.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.