Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> Установка net2ftp

Вступление в net2ftp (FreeBSD7.1 and apache22)

Автор: gx_ua.


Вступление в Net2ftp — ftp-клиент для заливки файлов через веб-браузер

Офф.сайт и первоисточник http://www.net2ftp.com/

Пару слов:

Возможности для пользователей:

   * перемещение по каталогам и подкаталогам 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

Требования:
   * веб-сервер(apache) с поддержкой PHP5. Для других веб-серверов свои особенности!!!
     Здесь  не рассматриваются!!!
   * ftp-сервер с авторизацией пользователей(pure-ftpd, proftpd, vsftpd)
   * MySQL51-server(для некоторых возможностей)
   
У меня : apache-2.2.11_3 с PHP5 и pure-ftpd-1.0.21_4(с хранением пользователей в MySQL
— умение выставлять ограничение по скорости, пароли, квоты и т.д), mysql-server-5.1.32


Установка

% cd /usr/ports/ftp/net2ftp/ && make install clean && rehash
%pkg_info -Ix net2ftp\*
net2ftp-0.98        PHP scripts to work with ftp


% setenv D /usr/local/www/net2ftp
% ls -dl $D/temp
drwxr-xr-x  2 root  wheel  512 19 окт 23:43 /usr/local/www/net2ftp/temp

%chmod 777 $D/temp
%ls -dl $D/temp
drwxrwxrwx  2 root  wheel  512 19 окт 23:43 /usr/local/www/net2ftp/temp

Добавляем в httpd.conf

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

    <Directory "/usr/local/www/net2ftp/">
         Options none
         AllowOverride Limit
         Order Allow, Deny
         Allow from all
    </Directory> 

Для .htaccess:
Limit. Допускает использование основных директив управления доступом (allow, deny и order), директив секционирования Limit, т.е. например ограничивают доступ к файлам в зависимости от адреса клиентского компьютера.

"Мягкий" рестарт apache22:

% /usr/local/etc/rc.d/apache22 graceful
Performing a graceful restart

Создание базы, пользователя net2ftp(права и пасс)
mysql> create database net2ftp;
Query OK, 1 row affected (0.06 sec)
mysql> show databases;
...............

mysql> grant all on net2ftp.* to 'net2ftp'@'localhost' 
mysql> identified by 'rdfynjdfystxbckfufeccf';

Далее еще нада заполнить базу: это можно сделать 2-мя способами либо вручную импортировать файл,
либо через web-интерфейс net2ftp, либо через Phpmyadmin. См. далее


# cat settings.inc.php
<?php


// | net2ftp: a web based FTP client |
// | Copyright (c) 2003-2008 by David Gartner |


// Базовые настройки


// Введите ваш email
// This is used as "from" address when sending files in attachment
$net2ftp_settings["email_feedback"] = "gnixua@yahoo.com";

// Выберите язык и скин по-умолчанию (загляните в 
/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"] = "NONE";
$net2ftp_settings["error_reporting"] = "standard";
//$net2ftp_settings["error_reporting"] = "ALL";


// Исправление ошибки полупрозрачностьи PNG изображений в 
// IE(Internet Explorer младше 7-й версии не умеет отображать 
// альфа-канал в файлах PNG)
$net2ftp_settings["fix_png"] = "yes";

// Измените md5 алгоритм хеширования для улучшения безопасности
//$net2ftp_settings["encryption_string"] = \
"462E16CB7C3F369BD9F4DBEE0A926F8F14FFB3";
$net2ftp_settings["encryption_string"] = \
"TH56II56RC3F369BD9F4DBEE0A926F8F1434TY";

//Логин и пароль администратора для админ панели

$net2ftp_settings["admin_username"] = "gx_ua";
$net2ftp_settings["admin_password"] = "dscjrbthzlsaehmt749";


// Введите сообщение для пользователей, 
//отображаеться над опциональными клавишами при входе

$net2ftp_settings["message_browse"] = "Welcome to the my home ftp!!!";


// Включить поддержку MySQL
//(Сначала поставьте no, после создания таблиц и другого, включим)
$net2ftp_settings["use_database"] = "no"; // "yes" or "no"

//Введите ваши настройки для MySQL
$net2ftp_settings["dbusername"] = "";
$net2ftp_settings["dbpassword"] = "";
$net2ftp_settings["dbname"] = "";
$net2ftp_settings["dbserver"] = "";

// Различные типы логов(ошибки, доступа)
//(если включаете — настройте секцию MySQL)
$net2ftp_settings["log_access"] = "yes";
$net2ftp_settings["log_error"] = "yes";

// Удалять автоматически логи,которые старше 31 дня
$net2ftp_settings["log_length_days"] = 31;


// Возможность использовать 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"] = "100000000"; // 100 MB или 97656.25 KB

// Надо также изменить некоторые параметры в php.ini
// 1 - in the file php.ini: upload_max_filesize, post_max_size,
// max_execution_time, memory_limit
// 2 - in the file php.conf: LimitRequestBody

// max_execution_time = 300
// post_max_size = 500M
// upload_max_filesize = 500M
// register_globals = On
// Ограничения:
// Максимальный размер одного файла ограничен net2ftp до 97656.25 Кб 
// и PHP до 500M
// Максимальное время выполнения 300 секунд
// Если надо еще больше обьемы заливать — увеличьте все значения


// Настройки потребление ресурсов(если включаете — настройте секцию MySQL)

// Switch consumption checking on or off
$net2ftp_settings["check_consumption"] = "yes";

// Максимальный обьем передачи данных на день (в Bytes)
// для 1-го IP адреса
$net2ftp_settings["max_consumption_ipaddress_datatransfer"] = 1000000000;
// у нас 1Гб

// для FTP сервера(5Гб)
$net2ftp_settings["max_consumption_ftpserver_datatransfer"] = 5000000000;

// Максимальное время выполнения скрипта (в seconds)
// для 1-го IP адреса:
$net2ftp_settings["max_consumption_ipaddress_executiontime"] = 5000;
// для FTP сервера:
$net2ftp_settings["max_consumption_ftpserver_executiontime"] = 10000;


$net2ftp_settings["check_homedirectory"] = "yes";

// Не изменяйте опции ниже


$net2ftp_settings["application_version"] = "0.97";
$net2ftp_settings["application_build_nr"] = "44";
$net2ftp_settings["net2ftpdotcom"] = "no";
$net2ftp_settings["show_google_ads"] = "no";

?>

Также доступна натройка опций авторизации в settings_authorizations.inc.php:

<?php
// | net2ftp: a web based FTP client |
// | Copyright (c) 2003-2008 by David Gartner |

// Использовать опции авторизации

$net2ftp_settings["check_authorization"] = "yes";


// Доступные ftp сервера(уже заранее определены администратором)

//$net2ftp_settings["allowed_ftpservers"][1] = "ALL";
$net2ftp_settings["allowed_ftpservers"][1] = "myhost.com.ua";
$net2ftp_settings["allowed_ftpservers"][2] = "myhost2.com.ua";
//$net2ftp_settings["allowed_ftpservers"][3] = "ftp.mydomain2.org";


// ftp-сервера, которые забанены, имеет смысл ставить 
//если предыдущая опция в ALL
$net2ftp_settings["banned_ftpservers"][1] = "NONE";
//$net2ftp_settings["banned_ftpservers"][1] = "192.168.1.1";
//$net2ftp_settings["banned_ftpservers"][2] = "192.168.1.2";
//$net2ftp_settings["banned_ftpservers"][3] = "192.168.1.3";

// Доступные порты
$net2ftp_settings["allowed_ftpserverport"] = "ALL";
//$net2ftp_settings["allowed_ftpserverport"] = "21";

// Разрешенные ip адреса
$net2ftp_settings["allowed_addresses"][1] = "ALL";
//$net2ftp_settings["allowed_addresses"][1] = "127.0.0.1";
//$net2ftp_settings["allowed_addresses"][2] = "192.168.100";
//$net2ftp_settings["allowed_addresses"][3] = "10.0.0.1";

// Забанненые 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";

// Запрещенные имена для папок и файлов
// Если создадите папку например paypal, вы получите сообщение
// С помощью net2ftp нельзя управлять данными, содержащими запрещенные слова. 
// Это необходимо  для защиты от подделок PayPal или Ebay.

//$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 значений вместо php.ini(см. выше):
0) Проверьте значения в вашем httpd.conf:
AccessFileName .htaccess

И конечно:

<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>

для запрета доступа к вашему .htaccess, etc; если изменили AccessFileName, измените и тут.
1) Измените в

<Directory "/usr/local/www/net2ftp/">
...................
</Directory>  


AllowOverride Limit на AllowOverride All

2) .htaccess

# cd /usr/local/www/net2ftp
# mv htaccess.txt .htaccess


# cat .htaccess
php_value max_execution_time 1200
php_value memory_limit 200M
php_value post_max_size 200M
php_value upload_max_filesize 200M

Далее заполняем базу данных net2ftp:
1)Вручную

$ :> ~/.my.cnf
$cat ~/.my.cnf
[client]
host=localhost
user=net2ftp
password= rdfynjdfystxbckfufeccf


$ mysql net2ftp < /usr/local/www/net2ftp/create_tables.sql

либо
2)Заходим через web интерфейс в админку и вводим нужные данные.....
Запрос:

Используемые настройки:

Имя пользователя MySQL: net2ftp
Длина пароля MySQL: 22
База данных MySQL: net2ftp
MySQL server: localhost

Результаты:

SQL-запрос 1 был успешно выполнен.
SQL-запрос 2 был успешно выполнен.
SQL-запрос 3 был успешно выполнен.
SQL-запрос 4 был успешно выполнен.
SQL-запрос 5 был успешно выполнен.
SQL-запрос 6 был успешно выполнен.
SQL-запрос 7 был успешно выполнен.
SQL-запрос 8 был успешно выполнен.
SQL-запрос 9 был успешно выполнен.
SQL-запрос 10 был успешно выполнен.
SQL-запрос 11 был успешно выполнен.
SQL-запрос 12 был успешно выполнен.
SQL-запрос 13 был успешно выполнен.
SQL-запрос 14 был успешно выполнен.

или другим удобным для вас способом
Включить поддержку MySQL

$net2ftp_settings["use_database"] = "yes"; // "yes" or "no"

//Введите ваши настройки для MySQL
$net2ftp_settings["dbusername"] = "net2ftp";
$net2ftp_settings["dbpassword"] = "rdfynjdfystxbckfufeccf";
$net2ftp_settings["dbname"] = "net2ftp";
$net2ftp_settings["dbserver"] = "localhost";

Логи:

mysql> show tables;
+-----------------------------------+
| Tables_in_net2ftp |
+-----------------------------------+
| net2ftp_log_access |
| net2ftp_log_consumption_ftpserver |
| net2ftp_log_consumption_ipaddress |
| net2ftp_log_error |
| net2ftp_users |
+-----------------------------------+
5 rows in set (0.00 sec)

Дополняйте, исправляйте....!!!

Скрины





размещено: 2009-03-22,
последнее обновление: 2010-01-26,
автор: gx_ua


Igor, 2010-02-18 в 9:57:20

здравствуйте!
делал всё как написано. однако вот отсюда
"2)Заходим через web интерфейс в админку" не получается зайти!
конешно по мурзилкам догадался что путь к адимнке - http://main-server/webftp
получаем - The requested URL /webftp was not found on this server.
либо автор чего-то не договаривает, либо подразумевается что-то очевидное для опытных!
получается противоречие с названием.. "вступление..." пишите просто и ясно чтоб ВСЕМ было понятно.

gx, 2010-02-18 в 10:15:00

"Заходим через web интерфейс в админку"
Смотри 2 скрин, ниже Login - есть Admin

"The requested URL /webftp was not found on this server."
Видимо Alias не /webftp, а другой - проверить в httpd.conf.

Igor, 2010-02-22 в 2:32:57

в httpd.conf Alias /webftp однако то что очевидно для вас - не очевидно для новичка. об этом и было первый комментарий. получается для новичка статья бесполезна.

Lestad, 2010-08-27 в 16:03:08

SQL-запрос 1 был успешно выполнен.
SQL-запрос 2 был успешно выполнен.
SQL-запрос 3 не может быть выполнен.
SQL-запрос 4 был успешно выполнен.
SQL-запрос 5 был успешно выполнен.
SQL-запрос 6 не может быть выполнен.
SQL-запрос 7 был успешно выполнен.
SQL-запрос 8 был успешно выполнен.
SQL-запрос 9 не может быть выполнен.
SQL-запрос 10 был успешно выполнен.
SQL-запрос 11 был успешно выполнен.
SQL-запрос 12 не может быть выполнен.
SQL-запрос 13 был успешно выполнен.
SQL-запрос 14 не может быть выполнен.

в чём грабли?

dserga, 2011-10-28 в 9:57:40

В работе оболочки обнаружился неприятный баг при работе с Opera и Chrome. Программа не отдает правильно имена файлов с незарегистрированными в браузере именами. Лечится этот недуг так.
в файле html.inc.php в строке 139 заменить
elseif (ereg('Opera ([0-9].[0-9]{1,2})'
на
elseif (ereg('Opera/([0-9].[0-9]{1,2})'

в файле filesystems.inc.php в строке 3720 заменить
($net2ftp_globals["browser_agent"] == "IE")
на
($net2ftp_globals["browser_agent"] == "IE" || $net2ftp_globals["browser_agent"] == "Opera" )

Тогда работает отлично с Opera
Chrome там не описан, поэтому его можно добавить ручками, введя переменную и создав аналогичные блок для работы с Chrome. Писать здесь не буду, ибо много, но сделать самому по аналогии с описаниями других браузеров не занимает большого труда.

Максим, 2012-04-11 в 23:56:46

Все работает на локалке! Перенес на хост! Не понятно почему но не соединяет с FTP. В чем может быть проблема?



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.051 секунд
Из них PHP: 44%; SQL: 56%; Число SQL-запросов: 80 шт.
Исходный размер: 55451; Сжатая: 11676