45
Описание утилиты WebTools

 

Содержание:

Назначение:

Утилита WebTools написана мной для выполнения изменений на моём внешнем сайте и реализует функции FTP-клиента через http-proxy:8080, при этом используется wsDmur.ocx. Нужно отметить, что из-за ограничений, налагаемых http-proxy, не весь набор операций над данными на FTP-сервере поддержан. По существу возможны только: чтение, изменение и добавление файлов в существующие каталоги, в то время как операции создания новых каталогов, а также удаления файлов/каталогов недопустимы. Последние мне приходится выполнять используя инструментальные средства администрирования на моём Web-сервере. Основное назначение, к которому я стремился, это распознавание последних изменений в файлах, выполненных на локальном компьютере, и засылка только их (изменённых файлов) на внешний FTP-сервер, при этом размер файлов не должен превышать 1MB.

Если Вас интересует только закачка данных с внешних FTP-серверов через http-proxy:8080, то как надеюсь, утилита WebTools поможет Вам в этом, никаких ограничений на объём файлов в этом случае не налагается, а при обрыве соединений сервером, после успешной попытки повторного соединения, производится попытка докачки.

Приложение написано средствами MS VC++ 6.0 (MFC) и представляет собой MDI-приложение

wt0.jpg (130934 bytes)

Рис. 1 Приложение WebTools.

в котором может быть открыто произвольное количество документов, каждый из которых "связан" с адресом конкретного внешнего FTP-сервера.

Настройка параметров:
В начало

Для открытия нового документа и установки ему адреса внешнего FTP-сервера необходимо, при отсутствии каких-нибудь открытых файлов, вызвать диалог свойств "Application properties" (пункт меню Tools/Properties...)

wt1.jpg (19532 bytes)

wt6.jpg (17297 bytes)

Рис. 2  Диалог "Application properties" (General, Proxy).

и изменив http-команду (свойство Command) к Вашему http-proxy-серверу на требуемую, создать новый документ (пункт меню File/New). Обратите внимание, что если Ваш IP-адрес зарегистрирован на proxy-сервере, то никакие поля на закладке Proxy заполнять не требуется, в противном случае, следует определить UID и PWD для так называемой basic-авторизации на proxy-сервере. Назначение других свойств приведено в Таблице 1:

Название Назначение
Remote Host Название proxy сервера.
Remote Port Порт proxy сервера.
File Name Временный файл для результатов запросов, получаемых с сервера .
Data Folder Подкаталог для файлов, загруженных с сервера (см. Open, Download ниже).
Log File Журнал команд, выполняемых wsDmur.ocx (при отсутствии значения св-ва журнал не ведётся).
Command Http-команда загрузки корневого каталога с FTP-сервера.
UID Имя пользователя на proxy сервере.
PWD Пароль пользователя на proxy сервере.
Http-header Дополнительные параметры, помещаемые в http-заголовок.

  Таб. 1 Назначение "Общих свойств приложения".

Относительно свойства Http-header нужно отметить, что строки, помещённые в качестве его значения, заносятся в http-заголовок сразу после команды (указанной в свойстве Command). В частности, этим свойством можно воспользоваться для авторизации на proxy-сервере, если по каким-либо причинам basic-авторизация Вас не устраивает. Более подробно см. в файле Readme wsDmur.ocx. Наконец, если Ваш FTP-сервер, также требует авторизованного доступа, то формат команды должен быть таким:
"GET ftp://UID:PWD@ftp_host.com/", где UID и PWD соответственно имя и пароль пользователя на Вашем FTP-сервере.

После создания файла все перечисленные свойства приложения становятся свойствами конкретного файла, и могут быть изменены, за исключением свойства Command. Если вызвать диалог свойств документа (пункт меню Tools/Properties...) при любом активном документе, то мы получим диалог изменения свойств именно этого документа.

В случае, если Вы предполагаете вносить изменения в файлы на Вашем FTP-сервере, то на закладке Location Вы должны установить соответствие между папками Вашего FTP-сервера и папками на локальных дисках Вашего компьютера, причём сделать это для каждой папки сервера:

wt2.jpg (42009 bytes)

Рис. 3  Диалог "Document properties" (Location).

При включенном флажке 'Reset All Subfolders' процесс определения месторасположения папок на локальном диске (Local Path) будет продолжен рекурсивно для всех подкаталогов, принадлежащих данному. По этому, в случае, когда структуры каталогов на FTP-сервере и на Вашем локальном диске совпадают, достаточно выполнить установку только для корневого каталога. Далее, предполагается, что в таким образом указанных папках на локальных дисках Вашего компьютера расположены именно те файлы (в соответствии с файлами на FTP-сервере) изменение которых Вы и предполагаете засылать на Ваш FTP-сервер. Проследите за тем, чтобы в отмеченных Вами каталогах была точная копия файлов Вашего внешнего FTP-сервера. С другой стороны, нужно отметить, что если Вы не предполагаете засылать изменения на FTP-сервер, то не следует определять значение свойств Local Path на закладке Location диалога "Document properties". Отсутствие значения свойства Local Path делает недоступными операции по изменению файлов как на локальных дисках, так и на FTP-сервере (см. Edit, Upload ниже).  

Информация о содержимом каталогов сервера/локального компьютера храниться в файлах с расширением wde, просмотр которых возможен из приложения WebTools без непосредственного обращения к серверу. Для регистрации в системном реестре расширения wde имеется небольшой файл: DocExtention.reg

REGEDIT
HKEY_CLASSES_ROOT\.wde = WebTools.Document
HKEY_CLASSES_ROOT\WebTools.Document = WebTools Doc
HKEY_CLASSES_ROOT\WebTools.Document\DefaultIcon = D:\Program Files\FtpClient\WebTools.exe,1
HKEY_CLASSES_ROOT\WebTools.Document\shell\open\command = D:\Program Files\FtpClient\WebTools.exe "%1"
HKEY_CLASSES_ROOT\WebTools.Document\shell\open\ddeexec = [open("%1")]

подправив пути в котором и зарегистрировав его в системном реестре, Вы сможете вызывать приложение WebTools двойным щелчком на файлах с расширением wde из Windows Explorer.

Работа:
В начало

Вся незамысловатая работа с приложением WebTools может быть рассказана путём объяснения ряда "не стандартных" пунктов  меню Tools (на Рис. 4 слева) и всплывающего меню, вызываемого по правой клавише мыши на правом окне документа (на Рис. 4 справа). 

wt3.jpg (10195 bytes) wt4.jpg (12879 bytes)

Рис. 4 Пункты меню

Прежде всего, если в документе не устанавливалось соответствие между папками на FTP-сервере и каталогами на дисках локального компьютера, т.е. на закладке Location в окне свойств "Document properties" (см. выше), то ряд пунктов не будет доступными, к ним относятся:

Название

Г. кл.

Пояснения

Refresh local Ctrl+F5 Обновляет информацию о файлах на локальных дисках.
Clear all changes Ctrl+F8 Удаляет всю информацию о последних изменениях локальных файлов.
Upload all changed F8 Организует обновление файлов на внешнем FTP-сервере, согласно последним изменениям.
Edit F4 Запускает редактор для локального файла.
Upload Ctrl+F4 Организует обновление выделенного множества файлов на внешнем сервере.
Open local Ctrl+F6 Открытие локального файла, используя его приложение-просмотрщик.

  Таб. 2 Команды, обеспечивающие изменение данных на сервере.

Остальные пункты доступны почти всегда и означают:

Название

Г. кл.

Пояснения

Refresh item F5 Обновляет информацию о файлах c внешнего FTP-сервера.
Select all files Ctrl+A Выделяет все файлы текущей папки.
Open F3 Загружает файл с внешнего FTP-сервера и пытается открыть его используя приложение-просмотрщик файла.
Download Ctrl+F3 Загружает выделенное множество файлов с внешнего FTP-сервера.
Remove all downloads F8 Удаляет с локального диска все файлы (см. св-во Data Folder из "Application properties"), которые загружались/открывались (Open, Download) во время сеанса.

  Таб. 3 Команды, обеспечивающие получение данных с сервера.

С каждым документом связан только один экземпляр wsDmur.ocx, обслуживающий его работу с сервером, поэтому будьте терпеливы в ожидании полного завершения любой команды обращения к серверу (Refresh Item, Open, Download; Upload all changed, Upload) прежде чем пытаться начать выполнять другую, однако, вполне допустима одновременная работа с разными документами.

При загрузки данных с сервера (Open, Download), анализируя содержимое очередного блока данных, полученных с сервера, в случае наличия в нём информации о длине данных в блоке, в нижней части окна документа появляется ProgressBar, и соответственно не появляется, в случае отсутствия подобной информации.

wt5.jpg (5083 bytes)

Рис. 5 Информация о процессе загрузки данных с сервера.

Здесь формат числовых данных, представленных в правой части, таков:
загруженовсего : процент_загруженного (количество_обрывов_соединения)

При засылке данных на FTP-сервер (Upload all changed, Upload) подобная информация никогда не предоставляется сервером. Все данные объединяются в один блок размером до 1MB, а в качестве результат мы получаем лишь уведомление о успешном (или неудачном) завершении попытки изменения данных на сервере.

Логика определения последних изменений не контролирует дату изменения файлов на сервере и опирается исключительно на дату последних изменений файлов на локальных дисках Вашего компьютера. Поэтому не требуется какого-либо согласования времени/даты сервера и Вашего компьютера, однако это делает невозможным внесение изменений с нескольких различных компьютеров на FTP-сервер на основании даты последних изменений.

Последние изменения:
В начало

Версия Пояснения к изменениям

2.0.6.1

Устранен ряд обнаруженных проблем, в частности:
- добавлена закладка Proxy в диалог Application/Document Properties со свойствами UID и PWD , т.е. если указаны свойства UID и PWD, то параметр Proxy-authorization: basic UID:PWD в http-заголоке формируется программно, и Вы избавлены от необходимости использования внешней утилиты для перекодировки подстроки UID:PWD в Base64.
- ни в системный реестр ни в файл с расширением wde пароли пользователя в открытом виде больше не пишутся.

2.0.6.2

Устранены следующие ошибки:
- файлы, удалённый на локальной машине оставались помеченными как существующие
- при очень длинных названиях файлов на сервере происходило зависание.

2.0.6.3

Добавлен пункт меню Open local, позволяющий открывать локальные файлы для просмотра.

2.0.6.4

Прежние версии были написаны под Proxy-server Squid/2.3.STABLE4, в то время как версия (т.е. 2.0.6.4) адаптирована под MS ISA Server Firewall 1.1. Я пытался внести изменения так, чтобы эта версия осталась работоспособной и под Squid, однако до конца не уверен, что это у меня получилось, а проверить, к сожалению, нет возможности... Буду благодарен за любую информацию по этому поводу. 

Заключительные замечания:
В начало

Скачать:

В начало

 
 
Hosted by uCoz