Как в wu-ftpd включить поддержку FXP ?

irinkina

Субж...
Только вот не надо советов, типа man wu-ftpd или поставь Proftpd.... Man читали, Proftpd не подойдет по специфике задачи...

sergey_m

И все таки интересно, что это за такая задача, что подходит только wu?

Ffever

Штап ламалси крута.

irinkina

Фильтрация контента ftp по ip....

sergey_m

В смысле что бы права раздавались по IP адресам? Так в ProFTPd это есть (я вовсе не советую использовать ProFTPd)

sergey_m

Правильный ответ - "включить не получится, нужно написать её самому". Подозреваю, что тебя это не устраивает.
Кстати, на этот FXP есть RFC или нет? Я не нашел.
На твоем месте я бы поставил http://sourceforge.net/projects/pureftpd/
Судя по описаниям это наиболее здоровый выбор. Хотя сам я с ним дела не имел.
Если же решишь писать поддержку FXP сам, то лучше пиши её к lukemftpd, а не к wu.

abrek

RTFS
запрет прибит гвоздями

irinkina

>Так в ProFTPd это есть
Есть, но очень криво... Придеться тогда прописывать линки, а это не есть хорошо...

irinkina

да есть поддержка FXP в wu-ftpd.... Все там уже написано...

irinkina

Вот это-то я и подозревал... А где по-конкретней, не подскажешь ?

sergey_m

Не нашел не в FAQ, не в manах. В исходники лезть лень. Покажи где?
И почему все таки именно wu?

irinkina

>Не нашел не в FAQ, не в manах. В исходники лезть лень. Покажи где?
Сам сейчас ищу...
>И почему все таки именно wu?
Потому что уже есть специальные скрипты, заточенные именно под wu под определенные задачи. Причем, у того человека, у которого они брались-FXP работает на его WU-сервере. Скрипты-то я перенастроил, а вот спросить у него, как он включал поддержку FXP в WU забыл, а он сейчас вне зоны досягаемости, и не будет его достаточно длительное время...

Ffever

Невзгоды сломали Кирю: всё реже и реже встречается в его постах фирменный смайл ''...

irinkina

Недождетесь !

abrek

Вот PORT (ftpcmd.y)


| PORT check_login SP host_port CRLF {
if (log_commands)
syslog(LOG_INFO, "PORT");
/* H* port fix, part B: admonish the twit.
Also require login before PORT works */
if ($2) {
#ifndef DISABLE_PORT
if [b](cliaddr.s_addr == his_addr.sin_addr.s_addr)[/b]
|| (port_allowed(inet_ntoa(cliaddr
&& (ntohs(cliport) > 1023 {
usedefault = 0;
if (pdata >= 0) {
(void) close(pdata);
pdata = -1;
}
data_dest.sin_family = AF_INET;
data_dest.sin_addr = cliaddr;
data_dest.sin_port = cliport;
reply(200, "PORT command successful.");
}
else {
#endif
memset(&data_dest, 0, sizeof(data_dest;
syslog(LOG_WARNING, "refused PORT %s,%d from %s",
inet_ntoa(cliaddr ntohs(cliport remoteident);
reply(500, "Illegal PORT Command");
#ifndef DISABLE_PORT
}
#endif
}
}


Вот PASV (ftpd.c)

if (!pasv_allowed(dataaddr
if (strcasecmp(dataaddr, remoteaddr) != 0) {
/*
* This will log when data connection comes from an address diff
erent
* than the control connection.
*/
#ifdef FIGHT_PASV_PORT_RACE
syslog(LOG_ERR, "%s of %s: data connect from %s for %s%s",
anonymous ? guestpw : pw->pw_name, remoteident,
dataaddr, name, sizebuf);
reply(425, "Possible PASV port theft, cannot open data connectio
n.");
(void) close(pdata);
pdata = -1;
return (NULL);
#else
syslog(LOG_NOTICE, "%s of %s: data connect from %s for %s%s",
anonymous ? guestpw : pw->pw_name, remoteident,
dataaddr, name, sizebuf);
#endif
}

sergey_m

First, we need to add an additional class for users that are allowed to do FXP (unless you just want to use the predefined class "all"). If you add a new class, this line MUST be before the catch-all class "all", or the client will match class "all" first.
The line is of the form:
class <ArbitraryClassName> <AccessTypes> <HostAddrs> [HostAddrs]
Then we add lines to allow PASV and PORT commands to hosts whose IPs don't match the client (to allow FXP)
These lines are of the form:
port-allow <ArbitraryClassName> <HostAddrs>
pasv-allow <ArbitraryClassName> <HostAddrs>
And now to put it into practice - a real example
class newclass real,guest,anonymous *.mydomain.net *.more.client.addresses.com
class all real,guest,anonymous *
port-allow newclass 0.0.0.0/0
pasv-allow newclass 0.0.0.0/0
This basically adds a new class (creatively called "newclass") - note that it appears before the line containing the class "all" - this new class contains all hosts in the subdomains mydomain.net and more.client.addresses.com (domains obviously made up by yours truly in order to limit who we will allow to do FXP. The port-allow and pasv-allow lines basically allow FXP connections to anywhere if your client is in the class "newclass".

Ffever

Чего к "недождетесь" не придрался?

abrek

Да, я неправильно исходник прочитал
Оставить комментарий
Имя или ник:
Комментарий: