[ТЕМА ЗАКРЫТА]
Опции темы
14.11.2012 11:22  
twix
Есть у меня программа, написанная с использованием .Net, и она активно использует класс FtpWebRequest для работы с одноимённым протоколом. Написал свою обёртку, абстрагирующую от прямого обращения к методам класса. Всё бы ничего, если не два 'но':
1. Список файлов с дополнительной информацией (флаги доступа, время модификации и имя/группа владельца) каждым FTP-сервером возвращаются немного по-разному, что затрудняет парсинг. Мне не нужно большое количество информации, поэтому я написал более-менее универсальный парсер, который возвращает список групп "флаги-имя". Хотя я довольно долгое время бодался с этим вопросом, и уже почти забил на решение проблемы.
2. Собственно, из-за чего и пишу этот пост. Я долго не мог понять, почему при попытке получить размер файла командой 'SIZE', на некоторых серверах (линуксовых, в основном) я получал исключение с описанием "Указанный файл не доступен". Долгие копания в интернетах, в конце концов, вывели меня на майкрософтовские багтрекеры, сообщения с этой проблемой в которых датированы ещё 2007-м годом. Там подробно описывалась проблема, причины её возникновения и возможные пути решения. Как оказалось, тогда команда 'SIZE' для FTP-серверов находилась в черновиках (я, увы, не проверил, находится ли она сейчас в RFC), и каждый разработчик имплементил её как мог. ProFTPd, например, сперва позволял использовать эту команду в ASCII-режиме, однако впоследствии, чтобы минимизировать вероятность/урон DOS-атак, возможность использования этой команды осталась только для Binary-режима. Класс FtpWebRequest же, даже будучи инструктированным использовать бинарный режим через флаг UseBinary, не отправляет серверу команду 'TYPE I' перед 'SIZE', что и приводит к появлению ошибки '550', которую FtpWebRequest идентифицирует как "Указанный файл не доступен". Эта бага, как я уже говорил, была озвучена ещё в 2007-м году, и тогда программисты майкрософт пообещали в следующих версиях .Net исправить эту оплошность... Однако, прошло уже больше пяти лет, а воз и ныне там.

Ну вот почему им трудно добавить пару строк в исходники либы, утраняющую этот баг... или реализующую возможность отправки произвольных команд FTP-серверу?
 
 
Опции темы


Часовой пояс GMT +3, время: 19:20.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.