воскресенье, 1 марта 2015 г.

Защита от превышения лимита GDI объектов

Привет.
У процесса Windows существует ограничение на кол-во GDI дескрипторов.
по умолчанию оно равно 10000
При достижении предельного значения гарфически интерфейс программы 
просто перестает откликаться (рис 1) помогает только снос через диспетчер задач.












C помощью такой атаки "злой админ" хаба может завалить DC++ клиент
накидав в окно много смайликов-убийц :)

В клиент FlylinkDC++ начиная с build 18323 добавлена защита от этого в виде
автоматического отключения смайлов при приближении GDI к лимиту.



воскресенье, 22 февраля 2015 г.

PtokaX 0.5.0.3

Всем привет.
Обновился хаб. в нем закрыта уязвимость
http://www.ptokax.org/news.html
Всем крупным хабам рекомендую обновиться

На уровне клиентов исправление внесены в AirDC++ и FlylinkDC++
к сожалению разработчики оригинального DC++ пока думают как это лучше исправить...


 

четверг, 12 февраля 2015 г.

Игнорируем дубликатные поиски файлов

Привет.
В новой бетке r503-build18257 добавлена функция предварительной фильтрации заведомо ложных поисковых запросов по маске. DC++ клиент сидит на множестве хабов и в него по сети летит достаточно больше кол-во запросов.
На рис 1 представлен топ запросов в моей сети:











максимальное кол-во запросов делают боты в целях выявить запрещенный контент

но т.к. боты тупые и не могут исключать дубликатные запрос к клиентам они вынуждены повторять их каждые N-минут.
но т.к. у законопослушного пользователя в шаре нет файлов, которые ищут боты
то клиент начинает выполнять рекурсивное сканирование всех файлов пока не найдет 5- 10 совпадений с маской… а это ресурсоемкая и длительная операция. в результате чего ваш комп тратит лишнее электричество.
Новая версия флайлинка блокирует подобные дубликатные запросы.
Факт игнорирования дубля отображается в CMD отладчике (рис 2)
на примере мой клиент "сжал" 9 запросов пришедших за 2 секунды с разных
хабов в поиске "аватар".






воскресенье, 8 февраля 2015 г.

deleaker - подарок для FlylinkDC++

Привет
Новые версии FlylinkDC++ избавились от некоторых утечек GDI ресурсов благодаря 
Deleaker! эта утилита подарена флайлинку как Open Source проекту от  разработчика Артема Разина
и уже помогла сделать флай лучше. Я давно использую детектор утечек памяти https://vld.codeplex.com
но он к сожалению не  "замечает" GDI и файловые дескрипторы.
в любом случае всем разработчикам GUI приложений на VC++ рекомендую попробовать 
http://www.deleaker.com
 

 


суббота, 31 января 2015 г.

DC++ лишние дисковые операции

Привет.
Когда DC++ клиент качает файл он выполняет частое открытие и закрытие временного файла *TTH.dctmp в который записываются полученные сегменты от разных пользователей
т.к. антивирусные мониторы при операции открытия файла выполняю анализ на предмет вирусни. В связи с этим рекомендуется вашему антивирусу добавить в исключение расширение файла *.dctmp - это снизит нагрузку на систему.
у себя в последних билдах FlylinkDC++ я исправил эту особенность и временный файл открывается один раз и закрывается только после того, как скачка всех сегментов файла окончательно завершится.













Ловится такая активность программой Process Monitor вот таким фильтром:








Обновить свой флайлинк до последней версии можно через
меню -> помощь -> проверка обновлений




вторник, 13 января 2015 г.

HFS от Mac в Windows чуток глючит?

Привет.
Пользователь в винде примонтировал файловую систему от MacOS (BOOTCAMP)
но у него вылез баг - при запуске флайлинка он повторно хеширует файлы расположенные на этом диске
причина оказалась в том, что размер файла показываемый под виндой всегда кратен размеру кластера
но если читать файл, то читается точный размер файла.
алгоритм хеширования через FidFile сканирует каталоги и анализирует размер файлов и временные метки
сравнивая их со значениями из базы. а в этом случае получается так, что размер файла не равен прочитанному 
в результате чего файл посылается в "вечное" повторное хеширование.
Кто встречал такое и как лучше это обойти если эта "фича" драйвера? 

Пример файла в картинках:





среда, 7 января 2015 г.

Автоматически определяем домашний роутер

Привет.
Новые версии FlylinkDC++ умеют детектировать подключение к интернету через роутер а также помогает узнать
какой у вас IP (белый/серый)
Алгоритм
1. Если в системе дефолтный шлюз = 192.168.1.1 или 192.168.0.1
автоматически включается режим подключения UPnP и рисуется ротуер
2. Если IP адрес полученный от upnp роутера не относится к приватной сети:
10.0.0.0/8
127.0.0.0/8
172.16.0.0/12
192.168.0.0/16

169.254.0.0/16
или к Shared Address Space:
100.64.0.0/10
вероятно у вас белый адрес(динамический или статический
и при нажатии кнопки "Тест портов и определение IP"
внешний WAN IP будет совпадать с полученным IP от роутера.
Если IP различаются, то у вас серый IP и вы находитесь за NAT-ом провайдера
при этом с внешними хабами работа возможна только в пассивном режиме.
У кого есть замечания - пишите в тему/почту
 














Также в связи с тем, что большинство wifi-роутеров сейчас имеют upnp по умолчанию включенным
реализован автоматически переход в пассивный режим если провалилась попытка проброса портов
в этом случае пользователь сможет искать и качать файлики в пассивном режиме через хаб.