Есть в наличии несколько работающих FTP-серверов. Ну а поскольку протокол радует тем, что используются стандартные команды, то загорелся идеей прикрутить к FTP-серверам веб-интерфейс. Погуглив нашел несколько скриптов (кстати в портах есть еще и phpwebftp, но он оказался очень корявым в работе). Испробовав несколько версий, нашел информацию о net2ftp, тем более данный софт оказался в портах. Pkg-descr тоже порадовал. Ну а когда поискал еще информации, то просто порадовало:
Возможности для пользователей:
Возможности для администраторов:
Офф. сайт: http://www.net2ftp.com/
Решено... "Пощупаем" что же это такое. Приступаем к установке:
# 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
Ради бога простите. ЗАПУСКАТЬ
Ради бога простите. ЗАПУСКАТЬ АДМИНКУ так - http://МОЙ_IP/net2ftp ?
Все зависит от того, как
Все зависит от того, как прописать алиас. В моем случае - http://МОЙ_IP/ftp (исходя из кусочка в httpd.conf:
Смотрите у себя, как прописан алиас).
Спавибо вам за статью! Хочу
Спавибо вам за статью! Хочу добавить. Может возникнуть проблема со скачиванием файла. А именно:
"Когда нажимаем на кнопку "закачать" оригинальное имя всегда заменяет на index.php?"
Я задал этот вопрос на этом форуме у лисяры
Человек под ником Nick_mad эту проблему смог решить. С вашего позволения выкладываю здесь:
В файле:
usr/local/www/net2ftp/includes/filesystem.inc.php
находим функцию sendDownloadHeaders начинается с 3689 строки и ее (функцию) нужно заменить:
function sendDownloadHeaders($filename, $filesize) {
// --------------
// This function sends download headers to the browser
// --------------
// -------------------------------------------------------------------------
// Global variables
// -------------------------------------------------------------------------
global $net2ftp_globals;
function detectUserAgent() {
if (!array_key_exists('HTTP_USER_AGENT', $_SERVER))
return "Other";
$uas = $_SERVER['HTTP_USER_AGENT'];
if (preg_match("@Opera/@", $uas))
return "Opera";
if (preg_match("@Firefox/@", $uas))
return "Firefox";
if (preg_match("@Chrome/@", $uas))
return "Chrome";
if (preg_match("@MSIE ([0-9.]+);@", $uas, $matches)) {
if (((float)$matches[1]) >= 6.0)
return "IE";
}
return "Other";
}
// -------------------------------------------------------------------------
// Clean the input, and encode the filename with htmlentities
// -------------------------------------------------------------------------
$filename = trim($filename);
$filename_html = htmlEncode3($filename);
$formatRFC2231 = 'Content-Disposition: attachment; filename*=UTF-8\'\'%s';
$formatDef = 'Content-Disposition: attachment; filename="%s"';
// -------------------------------------------------------------------------
// Check which is the content type and disposition
// -------------------------------------------------------------------------
$content_type = getContentType($filename);
switch (detectUserAgent()) {
case "Opera":
case "Firefox":
$filename = rawurlencode($filename);
$format = $formatRFC2231;
break;
case "IE":
case "Chrome":
$filename = rawurlencode($filename);
$format = $formatDef;
break;
default:
if (function_exists('iconv'))
$filename = @iconv("UTF-8", "ISO-8859-1//TRANSLIT", $filename);
$format = $formatDef;
}
header(sprintf($format, $filename));
header("Content-Type: " . $content_type);
header("Expires: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Content-Description: $filename_html");
header("Content-Length: $filesize");
header("Connection: close");
Вот и все! По ссылке выше можно скачать готовый файл! Спасибо за внимание! :)
Спасибо, что поделились
Спасибо, что поделились наблюдениями.
Кста, ссылка не разместилась, поскольку "Гостю" запрещено размещение ссылки. Просьба альтернативным образом сообщить адрес ссылки (например через форму контактов), либо же зарегистрироваться и разместить ссылку.