Доброго времени суток
Вот столкнулся с (Subj). Создав из-под Windows на диске, подключенном к рутеру (на нем установлена Samba 3) каталог, например, "Мультимедия", не могу зайти в него по FTP. Если я правильно понял, код буквы 'я' в кодировке win1251 ('0xFF') является служебным символом и из-за этого появляются проблемы с FTP-клиентами. У меня установлен альтернативный vsftpd (version 2.0.5+ ext build 3.3) и насколько я понимаю, начиная с версии 2.0.5+ (ext build 4) в нем этот вопрос решен:
Code:
...
В конфиг добавлен параметр double_377 (по-умолчанию установлен в 1), который позволяет отключать специфичный символ протокола телнета с кодом \377 (255 \0xFF).
...
Далее я скачиваю файлы для сборки (на момент написания - vsftpd-2.0.6+ ext build 1), но компиляция на рутере не удается
Code:
[Admin@Router vsftpd]$ make
gcc -c main.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c utility.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c prelogin.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c ftpcmdio.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c postlogin.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c privsock.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c tunables.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c ftpdataio.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c secbuf.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c ls.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c postprivparent.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c logging.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c str.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c netstr.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c sysstr.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c strlist.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c banner.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c filestr.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c parseconf.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c secutil.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c ascii.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c oneprocess.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c twoprocess.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c privops.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c standalone.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c hash.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c tcpwrap.c -O2 -Wall -W -Wshadow -idirafter dummyinc
tcpwrap.c:15:20: error: tcpd.h: No such file or directory
tcpwrap.c: In function ‘vsf_tcp_wrapper_ok’:
tcpwrap.c:28: error: storage size of ‘req’ isn’t known
tcpwrap.c:30: warning: implicit declaration of function ‘request_init’
tcpwrap.c:30: error: ‘RQ_DAEMON’ undeclared (first use in this function)
tcpwrap.c:30: error: (Each undeclared identifier is reported only once
tcpwrap.c:30: error: for each function it appears in.)
tcpwrap.c:30: error: ‘RQ_FILE’ undeclared (first use in this function)
tcpwrap.c:31: warning: implicit declaration of function ‘fromhost’
tcpwrap.c:32: warning: implicit declaration of function ‘hosts_access’
tcpwrap.c:28: warning: unused variable ‘req’
make: *** [tcpwrap.o] Error 1
[Admin@Router vsftpd]$
Пробовал компилировать без поддержки tcpwrappers (поправил builddefs.h), компиляция продолжилась, но снова прервалась ошибкой
Code:
[Admin@Router vsftpd]$ make
gcc -c tcpwrap.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c ipaddrparse.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c access.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c features.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c readwrite.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c opts.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c ssl.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c sysutil.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c sysdeputil.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c charconv.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c pasvrules.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -c usersip.c -O2 -Wall -W -Wshadow -idirafter dummyinc
gcc -o vsftpd main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o tunables.o ftpdataio.o secbuf.o ls.o postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o banner.o filestr.o parseconf.o secutil.o ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o tcpwrap.o ipaddrparse.o access.o features.o readwrite.o opts.o ssl.o sysutil.o sysdeputil.o charconv.o pasvrules.o usersip.o -Wl,-s `./vsf_findlibs.sh`
/opt/lib/gcc/mipsel-linux-uclibc/4.1.1/../../../libdl.so: undefined reference to `_dl_unmap_cache'
/opt/lib/gcc/mipsel-linux-uclibc/4.1.1/../../../libdl.so: undefined reference to `_dl_protect_relro'
/opt/lib/gcc/mipsel-linux-uclibc/4.1.1/../../../libdl.so: undefined reference to `_dl_errno'
/opt/lib/gcc/mipsel-linux-uclibc/4.1.1/../../../libdl.so: undefined reference to `_dl_map_cache'
/opt/lib/gcc/mipsel-linux-uclibc/4.1.1/../../../libdl.so: undefined reference to `_dl_debug'
collect2: ld returned 1 exit status
make: *** [vsftpd] Error 1
[Admin@Router vsftpd]$
Отсюда у меня два вопроса:
- правильно ли я рассуждаю о причинах проблемы и способе ее решения, и если да, то
- как скомпилировать vsftpd на рутере?
P.S. Русские названия файлов и каталогов в кодировке win1251, содержащие в себе маленькую букву 'я' - это данность
P.P.S. Вот эту тему видел, но у меня почему-то не компилируется