[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