УДК 004.057.4

РАЗРАБОТКА FTP-МЕНЕДЖЕРА С ПОМОЩЬЮ PHP

Якимов Антон Сергеевич1, Николаев Сергей Валерьевич2, Корнилков Алексей Петрович3
1Приамурский государственный университет имени Шолом-Алейхема, студент
2Приамурский государственный университет имени Шолом-Алейхема, студент
3Приамурский государственный университет имени Шолом-Алейхема, старший преподаватель кафедры информатики и вычислительной техники

Аннотация
Цель данной статьи продемонстрировать разработку собственного сетевого протокола прикладного уровня в виде FTP-менеджера, который обеспечит передачу файлов. Данная задача реализована с помощью языка программирования PHP.

Ключевые слова: интерфейс, менеджер FTP, сервер FTP


DEVELOPMENT FTP-MANAGER USING PHP

Yakimov Anton Sergeevich1, Nikolaev Sergey Valer'evich2, Kornilkov Alexey Petrovich3
1Sholom-Aleichem Priamursky State University, Student
2Sholom-Aleichem Priamursky State University, Student
3Sholom-Aleichem Priamursky State University, Senior Lecturer, Department of Computer Science

Abstract
The purpose of this paper to demonstrate the development of its own network application layer protocol in the form of FTP-manager, which provides file transfer. This task will be implemented using the programming language PHP.

Keywords: FTP, FTP-manager, FTP-server interface, PHP


Библиографическая ссылка на статью:
Якимов А.С., Николаев С.В., Корнилков А.П. Разработка FTP-менеджера с помощью PHP // Современная техника и технологии. 2015. № 2 [Электронный ресурс]. URL: http://technology.snauka.ru/2015/02/5747 (дата обращения: 27.05.2017).

Одним из первых прикладных протоколов является протокол передачи файлов (FTP-File Transfer Protocol). Разработан он в 1971 году и применяется в виде доступа к файлам удаленных хостов. На основе протокола FTP, разрабатывается программное обеспечение (ПО) для доступа к FTP-серверу. FTP-сервер – это удаленный хост, который предоставляет доступ к своим ресурсам и к хранящемся на нем файлам. Такое ПО носит название FTP – менеджер. В зависимости от поставленных целей, FTP-менеджеры могут предоставлять файлы и ресурсы так, как будто они имеются на компьютере пользователя, либо просто выполняют свою роль в виде отправки команд пользователя и файлов.

Протокол FTP и его модель описана в книге Н. Дилипа «Стандарты и протоколы интернета» [1]. В лабораторном практикуме С.Л. Сурменко описаны команды FTP протокола, его функционирование и демонстрация FTP-менеджера [2]. Пример разработки FTP-менеджера в программной среде Delphi продемонстрировано в книге С.М. Парижского [3]. А.В.Иванов провел исследование безопасности протокола FTP [4]. Автоматическое управление на основе ftp-соединений в домене показал И.Коробко [5]. А.Луконькин рассмотрел работу с ftp-сервером из «1С:Предприятие» [6]. Р.И.Баженов, А.П.Корников применяли сетевые технологии в своих исследованиях [7, 8].

Рассмотрим разработку собственного FTP-менеджера, используя язык программирования PHP.

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

В созданном классе напишем функцию Connect() для соединения с FTP-сервером (Рисунок 1).

Рисунок 1 – PHP-функция соединения с FTP-сервером

Функция Connect() содержит в себе 3 параметра: server, user и pass. В первый параметр передаем хост (или IP) FTP-сервера, во втором параметре передаем имя пользователя FTP-сервера, а в третьем – пароль данного пользователя.

При успешном соединении с хостом данного FTP-сервера, функция проверяет имя пользователя и пароля, отправляя FTP-серверу команду USER и PASS. Если аутентификация прошла успешно, то функция возвращает полученный идентификатор соединения данного FTP-сервера для последующего обращения различных команд к данному потоку FTP-сервера (Рисунок 2).

Рисунок 2 – PHP-функции отправки FTP команд

Во всех случаях в функции обычно передаются 2 параметра. Первым параметром является идентификатор FTP-сервера, который мы получили после выполнения функции Connect(), а вторым параметров является дополнительные команды/запросы для выполнения тех или иных операции.

Например, в функции USER(), в первом параметре передается идентификатор FTP-сервера, а во втором параметре передается имя пользователя. Внутри каждой функции используется еще одна функция – ftp_raw(), эта функция отправляет различные произвольные команды FTP-серверу. Зная команды FTP-протокола, мы можем, в нашем примере, произвести аутентификацию имя пользователя с помощью команды вида «USER имя_пользователя».

Помимо выполнения и отправки различных FTP команд, мы также еще одновременно записываем всю информацию в лог с помощью функции Message() (Рисунок 3). Позже можно будет вызвать функцию Log() для дальнейшего отображения лога в окне веб-интерфейса и проследить все происходящие события (Рисунок 4). В случае успеха или неудачи, мы всегда можем посмотреть возвращаемые коды ответа и выяснить статус данных действии.

Функция Message() :

Рисунок 3 – PHP-функция записи лога

В первом параметре передается само сообщение, для которого нужно будет выводить в лог, а во втором параметре передается тип данного сообщения. В нашем случае существуют всего четыре типа: D (Default) – обычное оповещение в логе, C (Client) – оповещение со стороны клиента, S (Server) – оповещение со стороны сервера и E (Error) – оповещение с ошибкой или неудачах каких-либо операции. Эти сообщения обрабатываются, и задают HTML/CSS стиль данного текста в нужный цвет окраски, в зависимости от того какой это тип сообщения. D – по умолчанию (т.е. без цвета), C – синего цвета, S – зеленного цвета и E – красного цвета. Все сгенерированные и обработанные сообщения записываются в сессию $_SESSION["message"].

Функция Log():

Рисунок 4 – PHP-функция вывода лога

Приступим к описанию интерфейса программы. Для создания интерфейса были использованы инструменты средств HTML и CSS. Первым делом создали окно авторизации, где в полях нужно ввести сервер, логин и пароль для соединения с FTP-сервером (Рисунок 5).

Рисунок 5 – Окно авторизации

После успешной авторизации пользователь переходит в основное окно FTP-менеджера (Рисунок 6).

Рисунок 6 – Главное окно FTP-менеджера

Рассмотрим более подробно это окно. В верхней части расположены кнопки, которые имеют свои определенные функции для взаимодействия с файлами/папками на FTP-сервере, такие как: «Обновить», «Копировать», «Вырезать», «Переименовать», «Удалить», «Права», «Создать папку», «Залить файл», «Скачать файл», «Выйти».

Следом идет элемент в виде полосы, растянутый на всю ширину. В нем располагается отображаемый путь (местонахождение), в зависимости от того в каком каталоге вы находитесь. С помощью него можно свободно перемещаться и на несколько уровней выше, нажав на нужный каталог в данном пути.

В центре интерфейса отображена таблица со списком имеющихся файлов/папок какого-либо каталога, в зависимости от местоположения. Данная таблица содержит в себе несколько столбцов:

  1. Имя – это наименование данного файла/папки.
  2. Размер – указывается размер данного файла в КилоБайтах.
  3. Дата – дата создания данного файла.
  4. Время – время создания данного файла.
  5. Права – буквенный вид прав доступа к данному файлу/папке.

Нижняя часть интерфейса состоит из мини-статистики и лога. Статистика отображает следующее: Количество папок и файлов в данном каталоге; Название FTP-сервера, к которому мы подключены; Имя текущего пользователя, присоединенному к данному FTP-серверу; Максимальный размер загружаемого файла. В логах отображены все наши какие-либо произошедшие операции и действия.

Рассмотрим метод подключения функций к интерфейсу. Воспользуемся языком JavaScript, который содержит в себе AJAX технологию, для динамичной загрузки и обновления данных в интерфейсе FTP-менеджера.

Рассмотрим функцию LIST(), которая будет отображать список содержимого того или иного каталога в таблице FTP-менеджера. Для начала, мы напишем функцию на языке JavaScript с использованием jQuery возможностей (Рисунок 7).

Рисунок 7 – JavaScript-функция отображения списка содержимого

В функции ftp_list() передается один параметр, который содержит в себе путь в строковом виде. Данный путь отправляется с помощью AJAX технологии скрипту list.php (Рисунок 8), который, в свою очередь, будет использовать написанный выше PHP класс и выполнять свои действия для успешного отображения содержимого того или иного каталога, в зависимости от того какой путь был им передан.

Скрипт list.php:

Рисунок 8 – Фрагмент кода list.php скрипта

Данный скрипт подключается к нашему классу с помощью функции Connect() и при успешном соединении получает идентификатор соединения FTP-сервера, куда, в свою очередь, передает данный идентификатор следующей функции – LIST(), и заодно передает наш полученный путь, сгенерированный JavaScript функцией через AJAX технологию.

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

Теперь необходимо подключить JavaScript функцию на сайте (Рисунок 9).

Рисунок 9 – Подключение JavaScript-функции для отображения списка содержимого

Во время загрузки, страница автоматически ищет функции внутри тега <script></script>, и запускает их. В нашем случае, при загрузке страницы срабатывается функция ftp_list(), которая передает параметр $_SESSION["current_path"] – эта переменная содержит в себе путь. Если пользователь в первый раз заходит в FTP-менеджер, то по умолчанию присваивается путь “/”, то есть корневой каталог FTP-сервера. При посещении различных папок, соответственно, меняется и путь в данной переменной. Также эта функция привязана и к кнопке «Обновить», где при нажатии на данную кнопку произойдет обновление списка содержимого. Помимо этого, данная функция выполняется и после других различных операции, такие как, к примеру: копирование, перемещение, переименование и т.д.

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


Библиографический список
  1. Дилип Н. Стандарты и протоколы интернета. М.: Изд. Отдел «Русская редакция» ТОО «Channel Trading Ltd.», 1999. 384 с.
  2. Сурменко С.Л. Лабораторный практикум по информационным сетям: учебное пособие. Биробиджан: ДВГСГА, 2005.  62 с.
  3. Парижский С.М. Delphi. Учимся на примерах // Онлайн библиотека uhlib.ru URL: http://www.uhlib.ru/kompyutery_i_internet/delphi_uchimsja_na_primerah/p19.php
  4. Иванов А.В. Исследование безопасности протокола FTP // Научно-технический вестник информационных технологий, механики и оптики. 2005. № 19. С. 167-171.
  5. Коробко И. Автоматическое управление. ftp-соединениями в домене // Системный администратор. 2012. № 7-8 (116-117). С. 28-29.
  6. Луконькин А. Работаем с ftp-сервером из «1С» // Системный администратор. 2009. № 5 (78). С. 70-71.
  7. Белов И.В., Винокуров А.С., Баженов Р.И. Разработка программы удаленного управления компьютером на основе протокола telnet // Science Time. 2014. № 10 (10). С. 39-43.
  8. Баженов Р.И., Корнилков А.П., Лопатин Д.К. Проектирование web-ориентированной информационной системы университета на основе клиент-серверных технологий // Актуальные проблемы гуманитарных и естественных наук. 2014. № 4-1. С. 68-71.


Все статьи автора «Якимов Антон Сергеевич»


© Если вы обнаружили нарушение авторских или смежных прав, пожалуйста, незамедлительно сообщите нам об этом по электронной почте или через форму обратной связи.

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

Вы должны авторизоваться, чтобы оставить комментарий.

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться: