Есть в наличии несколько работающих FTP-серверов. Ну а поскольку протокол радует тем, что используются стандартные команды, то загорелся идеей прикрутить к FTP-серверам веб-интерфейс. Погуглив нашел несколько скриптов (кстати в портах есть еще и phpwebftp, но он оказался очень корявым в работе). Испробовав несколько версий, нашел информацию о net2ftp, тем более данный софт оказался в портах. Pkg-descr тоже порадовал. Ну а когда поискал еще информации, то просто порадовало:
Возможности для пользователей:
- перемещение по каталогам и подкаталогам ftp сервера;
- загрузка файлов и поддержка распаковки архивов, flash-загрузчики;
- скачивание файлов, если выбрали множество файлов(каталогов) - загрузка в zip-архиве;
- архивирование файлов(каталогов) и возможность отправки этого архива *.zip на email, отправка файлов не анонимна: ваш IP-адрес так же как и время отправления будет добавлен в email;
- разархивирование: поддерживаемые форматы: .zip, .tar, .tgz and .gz;
- установка PHP-скриптов (если настроена такая возможность на сервере);
- копирование, перемещения, удаление файлов(каталогов);
- переименование, изменение прав доступа для файлов(каталогов);
- копирование или перемещения файлов(каталогов) на другой ftp-сервер;
- просмотр кода с подсветкой синтаксиса;
- подсчет размера файлов(каталогов);
- поиск файлов по слову или выражению;
- редактирование html, php кода с подсветкой синтаксиса (CodePress);
- текстовый редактор — для редактирования файлов.
Возможности для администраторов:
- Safe Mode — net2ftp прекрасно работает при SafeMode;
- MySQL DB — нужна для ведени логов, дневного лимит; опцию можна включить в конфигурационном файле;
- Авторизация — возможность подключаться пользователям к различным ftp-серверам;
- Введение лог-файлов — доступны 3 различных типа логов: по запрашиваемым страницам, по ошибкам, по логинам;
- Дневной лимит — ограничение дневного обьема передачи данных и время исполнения скриптов для каждого пользователя. Как только пользователь превышает предел - передача данных к серверу заблокируется;
- Лимит больших файлов - файлы, которые больше чем этот лимит не могут быть загружены/скачаны, остаеться возможность — переименовывать/удалять/изменять права;
- Запрещенные имена — файлы(каталоги), соддержащие эти имена -не обрабатываются;
- Интеграция с другими PHP приложениями — доступны модули для Mambo, Drupal and Xoops.
Офф. сайт: http://www.net2ftp.com/ [1]
Решено... "Пощупаем" что же это такое. Приступаем к установке:
# cd /usr/ports/ftp/net2ftp/ && make install clean && rehash |
Добавляем в httpd.conf следующий блок:
Alias /ftp/ "/usr/local/www/net2ftp/" <Directory "/usr/local/www/net2ftp/"> Options none AllowOverride All Order Allow,Deny Allow from all </Directory> |
Проверяем, не допустили ли ошибок при редактировании httpd.conf, и если все в порядке, то "мягко" перезапускаем apache:
# apachectl configtest |
Далее создаем БД MySQL, пользователя MySQL, и даем ему полные права на эту БД.
# mysql –u username –p |
Заливаем данные в БД:
# mysql -u net2ftp -p net2ftp < /usr/local/www/net2ftp/create_tables.sql Enter password: |
Далее правим конфигурационный файл /usr/local/www/net2ftp/settings.inc.php. Вот что у меня получилось (постарался не жалеть комментариев):
<?php
// Базовые настройки
// e-mail адресс. Будет использоваться в поле "From" при отправке
// сообщений с аттачментом. Позаботьтесь о том, чтобы такой // e-mail существовал $net2ftp_settings["email_feedback"] = "ftp [at] muff [dot] kiev [dot] ua"; // Язык и скин по умолчанию (посмотрите в /languages и /skins, чтобы ознакомиться
// с доступными $net2ftp_settings["default_language"] = "ru"; $net2ftp_settings["default_skin"] = "blue"; // Введите адрес справки, форума поддержки или системы тикетов. Будет создан линк
// в футере. Оставьте незаполненым, если не хотите использовать. $net2ftp_settings["help_text"] = ""; $net2ftp_settings["help_link"] = ""; // Настройка извещения об ошибках PHP
$net2ftp_settings["error_reporting"] = "standard";
// Исправление ошибки отображения прозрачности изображений PNG в IE
$net2ftp_settings["fix_png"] = "yes"; // Измените алгоритм MD5 хеширования для повышения безопасности
$net2ftp_settings["encryption_string"] = "462E16CB7C3F369BD9F4DBEE0A926F8F14FFB3"; // Логин и пароль администратора для панели управления.
// Если пароль не задан, панель управления будет недоступна $net2ftp_settings["admin_username"] = "admin"; $net2ftp_settings["admin_password"] = "hard_password"; // Сообщение для пользователей. Будет отображаться над опциональными клавишами
// при входе $net2ftp_settings["message_browse"] = ""; // Использование MySQL является опциональным. Вы можете использовать эту опцию // Использовать MySQL или нет
$net2ftp_settings["use_database"] = "no"; // "yes" or "no" // Параметры соединения с MySQL
$net2ftp_settings["dbusername"] = "net2ftp"; $net2ftp_settings["dbpassword"] = "password"; $net2ftp_settings["dbname"] = "net2ftp"; $net2ftp_settings["dbserver"] = "localhost"; // Включение логгирования
$net2ftp_settings["log_access"] = "yes"; $net2ftp_settings["log_error"] = "yes"; // Автоматическое удаление логов "старше" этого значения
$net2ftp_settings["log_length_days"] = 31; // number of days // Вести логирование в syslog
$net2ftp_settings["use_syslog"] = "no"; $net2ftp_settings["syslog_priority"] = LOG_NOTICE; $net2ftp_settings["syslog_facility"] = LOG_MAIL; $net2ftp_settings["syslog_ident"] = "net2ftp"; // Файлы, больше установленого лимита будут исключены из операций:
// закачки, выкачки, копирования, перемещения, поиска, просмотра, правки $net2ftp_settings["max_filesize"] = "300000000"; // in Bytes, 300 МB // ПРИМЕЧАНИЕ: Если Вы хотите разрешить загрузку больших файлов, необходимо
// изменить следующие параметры: // 1 - в файле php.ini: upload_max_filesize, post_max_size, // max_execution_time, memory_limit // 2 - в файле php.conf: LimitRequestBody // Настройка потребления ресурсов (если включаете, то настройте секцию MySQL
// Задействовать или нет ограничения по потреблению ресурсов $net2ftp_settings["check_consumption"] = "yes"; // Максимальный обьем переданных даных в день
$net2ftp_settings["max_consumption_ipaddress_datatransfer"] = 2000000000; // для IP адреса (2 ГБ) $net2ftp_settings["max_consumption_ftpserver_datatransfer"] = 10000000000; // для FTP-сервера (10 ГБ) // Максимальное время выполнения скрипта в день (в секундах)
$net2ftp_settings["max_consumption_ipaddress_executiontime"] = 1800; // для IP адреса (30 мин) $net2ftp_settings["max_consumption_ftpserver_executiontime"] = 10800; // для FTP-сервера (3 часа) // Максимальное количество доступных FTP-серверов за день
$net2ftp_settings["max_consumption_ipaddress_nr_of_ftpservers"] = 1; // Проверять домашний каталог пользователя?
$net2ftp_settings["check_homedirectory"] = "yes";
// НЕ ИЗМЕНЯЙТЕ СЛЕДУЮЩИЕ ОПЦИИ
$net2ftp_settings["application_version"] = "0.98";
$net2ftp_settings["application_build_nr"] = "45"; // Is this net2ftp.com, or a net2ftp installation elsewhere $net2ftp_settings["net2ftpdotcom"] = "no"; // Google Adsense advertisements // Not shown when using HTTPS to avoid warnings on each pageload $net2ftp_settings["show_google_ads"] = "no"; ?>
|
Также советую "поработать напильником" над файлом авторизации settings_authorizations.inc.php:
<?php
// Проверять авторизацию? // Разрешенные FTP-сервера // Список заблокированных серверов. Имеет смысл использовать, в случае, если // Разрешенные для FTP порты // Разрешенные IP-адресса или блок IP-адресов // Список IP-адресов, которым запрещен доступ // Перечень имен для файлов и каталогов, использование которых запрещено. ?> |
Далее с помощью .htaccess изменим некоторые глобальные переменные php.ini для нашего каталога:
# cd /usr/local/www/net2ftp/ && mv htaccess.txt .htaccess |
Я установил такие значения:
# cat /usr/local/www/net2ftp/.htaccess php_value max_execution_time 1200 php_value memory_limit 200M php_value post_max_size 200M php_value upload_max_filesize 200M |
Вот и все, настройка завершена. Остался только завершающий штрих:
# chown -R www:www /usr/local/www/net2ftp/ |
ПРИМЕЧАНИЕ: Чтобы разрешить или запретить определенные функции, выставьте значение "yes" или "no" в файле settings_screens.inc.php