Temat: Polskie znaki, FTP i Samba
Może komuś się przyda. Temat trudny, bo trzeba skompilować pakiet. No chyba, że nasz mentor i opiekun się zlituje i włączy go do swojego repozytorium.
Cel: mieć na routerze pliki z polskimi znakami diakrytycznymi i poprawnie i spójnie je obsługiwać z poziomu FTP i Samby.
A po co pliki z takimi znakami? Żeby się tytuły filmów w kliencie DLNA ładnie pokazywały.
W obrazach od Cezarego jest Samba i ślicznie obsługuje UTF-8. A jak nie masz samby, to gdzieś tu jest poradnik.
W obrazach od Cezarego jest wbudowany serwer ftp (vsftpd), niestety nie obsługuje UTF-8.
Jest na OpenWrt serwer pure-ftpd, który mógłby obsługiwać UTF-8, ale w repozytoriach jest wersja skompilowana bez tej właściwości. Trzeba samodzielnie.
O tu: http://eko.one.pl/?p=openwrt-kompilacja jest opisane jak to się robi.
Trzeba zmienić ten plik: opt/backfire/feeds/packages/net/pure-ftpd/Makefile
Po linii:
include $(INCLUDE_DIR)/package.mk
trzeba dopisać
include $(INCLUDE_DIR)/nls.mk
O tak:
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mkW sekcji "define Package/pure-ftpd" trzeba dopisać
DEPENDS+=+libiconv-full
O tak:
define Package/pure-ftpd
$(call Package/pure-ftpd/Default)
TITLE+= (no TLS)
VARIANT:=notls
DEPENDS+=+libiconv-full
endefW sekcji "define Package/pure-ftpd-tls"
trzeba zmienić do linii DEPENDS+ dopisać +libiconv-full
O tak:
define Package/pure-ftpd-tls
$(call Package/pure-ftpd/Default)
TITLE+= (TLS)
VARIANT:=tls
DEPENDS+=+libopenssl +libiconv-full
endefI ostatnia zmiana: do konfiguracji (tej pierwszej)
CONFIGURE_ARGS += \
trzeba dodać:
--with-rfc2640
O tak (zwróć uwagę na dodatkowy backslash):
CONFIGURE_ARGS += \
--with-everything \
--with-virtualchroot \
--with-rfc2640Opcjonalnie:
dodałem sobie jeszcze linijkę opisu w "define Package/pure-ftpd/description"
i zmieniłem PKG_RELEASE=1 na PKG_RELEASE:=1.rfc2640
Zmiany w pliku trzeba zapisać :)
Odpalamy: make menuconfig
Zaznaczamy w: packages/Network/FileTransfer pakiety oba: pure-ftpd i pure-ftpd-tls (tak, żeby była przy nich literka 'M')
Kompilujemy: make package/pure-ftpd/compile
i z katalogu opt/backfire/bin/blahblah/packages wyciągamy świeżutkie pakiety.
Wystarczy je skopiować do routera i zainstalować używając pełnej nazwy pliku. Jakoś tak:
"opkg install /etc/doc/packages/pure-ftpd-tls_1.0.32-1.rfc2640_ar71xx.ipk"
Jeśli w systemie jest zainstalowany vsftpd, to czas go wyłączyć:
/etc/init.d/vsftpd stop
/etc/init.d/vsftpd disable
pure-ftp konfiguruje się o tak: http://openwrt.pl/doku.php/zastosowania:uslugi_nas
Uwaga: możesz mieć już w systemie użytkownika "ftp". Sprawdź w /etc/passwd, jaki ma katalog domowy i sprawdź, czy ma tam wytaczające uprawnienia
W pliku /etc/config/pure-ftpd trzeba dodać dwie nowe opcje:
option fscharset 'iso-8859-2'
option clientcharset 'UTF-8'Jeśli wszystko było ok, to pozostało tylko:
/etc/config/init.d/pure-ftpd start
/etc/config/init.d/pure-ftpd enableUwaga: ani Firefox, ani IE nie obsługują poprawnie UTF-8.
W Firefoxie: trzeba ręcznie wybrać zestaw znaków: UTF-8,
W IE: "Aby wyświetlić tę witrynę FTP w Eksploratorze Windows, naciśnij klawisz Alt, kliknij opcję Widok, a następnie kliknij opcję Otwórz witrynę FTP w Eksploratorze Windows"
Dobre klienty ftp (jak na przykład FileZilla) poprawnie negocjują i wykorzystują zadane kodowanie znaków.
A przy okazji: pure-ftpd-tls po odpowiednim nakarmieniu certyfikatami obsługuje ftps://