[sisyphus] Redmine и кириллица в названиях файлов

Денис Ягофаров denyago на rambler.ru
Пт Июл 23 15:00:18 UTC 2010


Доброго времени суток.

Продолжая налаживать у себя redmine, столкнулся с досадной фичей:
если прикреплять куда-либо файлы с кириллицей в названии (проба.расш)
то все не ASCII буквенные символы переименовываются в "_" ( 
__________.________ </attachments/12/____________.________>).

Это, для русскоговорящего человека неприятно. (баг тут - 
http://www.redmine.org/issues/4324)

Исследовав проблему, я определил, что во всём виновато 
app/models/attachment.rb ,
а именно в функции sanitize_filename строка:

@filename = just_filename.gsub(/[^\w\.\-]/,'_')

Если её земенить на:

@filename = just_filename.force_encoding('UTF-8')

, то руссике имена отлично работают, но безопасность должна падать ниже 
плинтуса,
т.к. злоумышленник может загрузить файл с хитрым названием и не 
буквенными символами.
( http://guides.rubyonrails.org/security.html : 4.2 File Uploads)

В свою очередь, можно было бы заставить ruby работать с UTF8. Про это 
рассказывается тут:
http://stackoverflow.com/questions/1627767/rubys-stringgsub-unicode-and-non-word-characters
Но, у меня не получилось... Наверно, это связано с ruby:

$ irb -U
irb(main):001:0> my_str = "Quística."
=> "Quпробаstica."
irb(main):002:0> processed = my_str.gsub(/\W/,'')
=> "Qustica"

$ irb -Ku
/usr/share/ruby/1.9/irb/init.rb:199:in `parse_opts': Unrecognized 
switch: -Ku (IRB::UnrecognizedSwitch)
         from /usr/share/ruby/1.9/irb/init.rb:18:in `setup'
         from /usr/share/ruby/1.9/irb.rb:53:in `start'
         from /usr/bin/irb:12:in `<main>'

$ ruby -Ku /tmp/test.rb
Qustica

$ cat /tmp/test.rb
my_str = "Quпробаstica."
processed = my_str.gsub(/\W/,'')
print processed

Возможно, кто-то сможет подсказать как заставить регулярные выражения и 
нашу ruby работать с unicode.

ruby-1.9.1-alt1.r26040.1

П.С. До кучи: кто-то проверял добавление файлов из писем? Тут 
рассмотрена эта проблема:
http://redmine.net.ua/forum/index.php?topic=114.0


----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : denyago.vcf
Тип     : text/x-vcard
Размер  : 384 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20100723/469c25e4/attachment.vcf>


Подробная информация о списке рассылки Sisyphus