Net2ftp - работаем с ФТП через браузер

Версия для печатиОтправить другуPDF version

Есть в наличии несколько работающих 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/


Решено... "Пощупаем" что же это такое. Приступаем к установке:

# 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
Syntax OK
# apachectl graceful

 Далее создаем  БД MySQL, пользователя MySQL, и даем ему полные права на эту БД.

# mysql –u username –p
Enter password:
mysql> create database net2ftp;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on net2ftp.* to 'net2ftp'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec)
mysql>quit

 Заливаем данные в БД:

# 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

// Проверять авторизацию?
$net2ftp_settings["check_authorization"] = "yes";

// Разрешенные FTP-сервера
// Введите ALL для разрешения всех серверов
// Будет автоматически изменено приглашение:
// - если установлена опция ALL, будет доступно поле для ввода текста
// - если указан только один сервер, поле ввода отображаться не будет
// - если указано несколько разрешенных серверов, будет доступен
// выпадающий список
$net2ftp_settings["allowed_ftpservers"][1] = "localhost";
// Пример из нескольких серверов:
//$net2ftp_settings["allowed_ftpservers"][1] = "myhost.com.ua";
//$net2ftp_settings["allowed_ftpservers"][2] = "myhost2.com.ua";

// Список заблокированных серверов. Имеет смысл использовать, в случае, если
// опция разрешенных серверов выставлена в "ALL"
$net2ftp_settings["banned_ftpservers"][1] = "NONE";

// Разрешенные для FTP порты
$net2ftp_settings["allowed_ftpserverport"] = "21";

// Разрешенные IP-адресса или блок IP-адресов
$net2ftp_settings["allowed_addresses"][1] = "ALL";

// Список IP-адресов, которым запрещен доступ
$net2ftp_settings["banned_addresses"][1] = "NONE";
//$net2ftp_settings["banned_addresses"][1] = "127.0.0.1";
//$net2ftp_settings["banned_addresses"][2] = "192.168.1.2";
//$net2ftp_settings["banned_addresses"][3] = "192.168.1.3";

// Перечень имен для файлов и каталогов, использование которых запрещено.
// Пользователю будет выдано сообщение об ошибке
//$net2ftp_settings["banned_keywords"][1] = "NONE";
$net2ftp_settings["banned_keywords"][1] = "paypal";
$net2ftp_settings["banned_keywords"][2] = "ebay";
$net2ftp_settings["banned_keywords"][3] = "wachoviabank";
$net2ftp_settings["banned_keywords"][4] = "wellsfargo";
$net2ftp_settings["banned_keywords"][5] = "bankwest";
$net2ftp_settings["banned_keywords"][6] = "hsbc";
$net2ftp_settings["banned_keywords"][7] = "halifax-online";
$net2ftp_settings["banned_keywords"][8] = "lloydstsb";
$net2ftp_settings["banned_keywords"][9] = "egg.com";

?>

Далее с помощью .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

 

Ваша оценка: Нет Средняя: 5 (4 голоса)

Ради бога простите. ЗАПУСКАТЬ

Ради бога простите. ЗАПУСКАТЬ АДМИНКУ так - http://МОЙ_IP/net2ftp  ?

Все зависит от того, как

Все зависит от того, как прописать алиас. В моем случае - http://МОЙ_IP/ftp (исходя из кусочка в httpd.conf:

Alias /ftp/ "/usr/local/www/net2ftp/"

Смотрите у себя, как прописан алиас).

Спавибо вам за статью! Хочу

Спавибо вам за статью! Хочу добавить. Может возникнуть проблема со скачиванием файла. А именно:

"Когда нажимаем на кнопку "закачать" оригинальное имя всегда заменяет на 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");

Вот и все! По ссылке выше можно скачать готовый файл! Спасибо за внимание! :)

 

Спасибо, что поделились

Спасибо, что поделились наблюдениями.

Кста, ссылка не разместилась, поскольку "Гостю" запрещено размещение ссылки. Просьба альтернативным образом сообщить адрес ссылки (например через форму контактов), либо же зарегистрироваться и разместить ссылку.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература

Кто пустил женщину за консоль сервера?!!!