ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
From: "Денис Ягофаров" <denyago@rambler.ru>
To: ALT Linux Sisyphus discussion list <sisyphus@lists.altlinux.org>
Subject: [sisyphus] Redmine и кириллица в названиях файлов
Date: Fri, 23 Jul 2010 18:00:18 +0300
Message-ID: <4C49AE82.1080304@rambler.ru> (raw)

[-- Attachment #1: Type: text/plain, Size: 2594 bytes --]

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

Продолжая налаживать у себя 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



[-- Attachment #2: denyago.vcf --]
[-- Type: text/x-vcard, Size: 385 bytes --]

begin:vcard
fn:Denis Timurovich Yagofarov
n:Yagofarov;Denis Timurovich
org:ITGIS NASU
adr:room 615;;Chokolovski blvdr., 13;Kiev;;03151;Ukraine
email;internet:denyago@rambler.ru
title:system administrator
tel;work:80445201209
tel;cell:80662933760
note;quoted-printable:xmmp: denyago@gmail.com=0D=0A=
	xmmp: diyago@jabber.te.ua
x-mozilla-html:FALSE
version:2.1
end:vcard


             reply	other threads:[~2010-07-23 15:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-23 15:00 Денис Ягофаров [this message]
2010-07-23 15:05 ` Денис Ягофаров
2010-07-23 15:57 ` Alexey I. Froloff

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C49AE82.1080304@rambler.ru \
    --to=denyago@rambler.ru \
    --cc=sisyphus@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Sisyphus discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
		sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
	public-inbox-index sisyphus

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sisyphus


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git