Odstranění nadbytečných mezer v ProFTPD
Poslední dobou jsem se začal setkávat s problémy uživatelů, kteří nemohli smazat nebo přejmenovat soubor na FTP serveru. Prakticky všechny tyto případy měly jednu společnou vlastnost – soubor obsahoval mezeru na začátku nebo na konci svého názvu. Bohužel s takovýmito soubory díky ne zrovna nejlepší implementaci FTP protokolu spousta klientů nepracuje.
Stejný problém jsem našel i na několika diskusních fórech kdy uživatelé problém obvykle řsšli nějakým find scriptem v cronu, což mi nepřišlo jako úplně nejvhodnější řešení. Začal jsem tedy důkladněji zkoumat mizernou dokumentaci jinak zajímavého modulu mod_rewrite.c do ProFTPD.
Nakonec se mi podařilo napsat pravidla odstraňující tyto nadbytečné mezery na začátku a na konci názvu souboru nebo ardesáře.
LoadModule mod_rewrite.c
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteLog none
RewriteMap replace int:replaceall
RewriteCondition %m STOR [NC,OR]
RewriteCondition %m MKDIR [NC]
RewriteRule "^ +(.*)" "$1"
RewriteRule "(.*) +$" "$1"
</IfModule>
ProFTPD je samozřejmě nutné mít zkompilované s podporou modulu mod_rewrite.c.
Zdrojový RPM balík ProFTPD pro RHEL/CentOS se všemi na těchto stránkách zmíněnýmí možnostmi je možné stáhnout zde: http://glux.org/download/proftpd-1.3.3b-8.src.rpm.
Zdravim,
skvely napad, ale nejaka chybicka. Pokusil jsem se zkopirovat adresar ‘ aaaa’ a v pohode se vytvoril. Log pise:
rewrite_fixup(): CWD arg ‘ aaaa’ does not match RewriteRule regex
S pozdravem Hexim