Hajime BABA
baba.****@nifty*****
2003年 11月 13日 (木) 19:10:27 JST
hiki-dev ML の皆様 0.5系を使っていて気が付いた細かなパッチをいくつかお送りします。 適当に取捨選択あるいは変更していただいて、CVS に取り入れていただけ るとありがたいです。>committer の皆様 1. misc/plugin/attach/attach.rb 本文中で attach_anchor_string, attach_anchor, attach_image_anchor を日本語ファイル名を引数として呼び出すと HTML 的におかしくなります。 $charset = 'EUC-JP' 以外では試していませんが、おそらくパッチのよう にするのが正しいとおもわれます。なお、add_body_leave_proc と add_form_proc が Exception を捕捉するようにも修正してあります。 # こうしないと # "NameError(undefined method `escape' for #): body_leave_proc" # のエラーが出ることがありました。 さらに、(元々の) attach.rb にもあった XSSの修正も加えてあります。 採り入れていただけるなら、ついでに、 http://lists.sourceforge.jp/mailman/archives/hiki-dev/2003-October/000449.html も合わせて採り入れていただけるとありがたいです。 2. hiki/command.rb 以前にも流しましたが、管理者パスワードを設定していると、凍結してい ないページの削除ができなくなります(凍結しているページで正しいパス ワードを入れれば消せる)。これは以下の間違いではないでしょうか。 3. misc/plugin/cvs.rb svn プラグインも追加されていますし、$cvsroot ではなくて $repos_root を見るように、以下のようにしてはいかがでしょうか。 4. plugin/00default.rb できれば、view 以外のモードではブラウザキャッシュしないようなメタ タグを加えていただけるとありがたいです。これは「おまじない」なので 採り入れられなくても構いません。 その他に、 Hikiの編集機能に認証をかける http://www.matchy.net/AuthedHiki.html がマージ(あるいは同等の機能が実装)されるとありがたいです。 -- Hajime BABA / 馬場 肇 baba.****@nifty***** -------------- next part -------------- Index: attach.rb =================================================================== RCS file: /cvsroot/hiki/hiki/misc/plugin/attach/Attic/attach.rb,v retrieving revision 1.1.2.14 diff -u -r1.1.2.14 attach.rb --- attach.rb 12 Aug 2003 06:34:24 -0000 1.1.2.14 +++ attach.rb 12 Nov 2003 09:49:38 -0000 @@ -56,19 +56,19 @@ def attach_anchor_string(string, file_name, page=@page) s = %Q!<a href="! - s << %Q!#{$cgi_name}#{cmdstr('plugin', "plugin=attach_download;p=#{page.escape};file_name=#{file_name.to_euc}")}">! - s << %Q!#{if string then string else file_name.unescape.to_euc end}</a>! + s << %Q!#{$cgi_name}#{cmdstr('plugin', "plugin=attach_download;p=#{page.escape};file_name=#{file_name.escape}")}">! + s << %Q!#{if string then string.escapeHTML else file_name.escapeHTML end}</a>! end def attach_anchor(file_name, page=@page) s = %Q!<a href="! - s << %Q!#{$cgi_name}#{cmdstr('plugin', "plugin=attach_download;p=#{page.escape};file_name=#{file_name.to_euc}")}">! - s << %Q!#{file_name.unescape.to_euc}</a>! + s << %Q!#{$cgi_name}#{cmdstr('plugin', "plugin=attach_download;p=#{page.escape};file_name=#{file_name.escape}")}">! + s << %Q!#{file_name.escapeHTML}</a>! end def attach_image_anchor(file_name, page=@page) s = %Q!<img alt="#{file_name.escapeHTML}" src="! - s << %Q!#{$cgi_name}#{cmdstr('plugin', "plugin=attach_download;p=#{page.escape};file_name=#{file_name}")}">! + s << %Q!#{$cgi_name}#{cmdstr('plugin', "plugin=attach_download;p=#{page.escape};file_name=#{file_name.escape}")}">! s << %Q!</img>! end @@ -103,7 +103,7 @@ page = (params['p'][0] || '') file_name = (params['file_name'][0] || '') attach_file = "#{@cache_path}/attach/#{page.escape}/#{file_name.escape}" - extname = /\.([^.]+)$/.match(file_name.unescape.downcase).to_a[1] + extname = /\.([^.]+)$/.match(file_name.downcase).to_a[1] mime_type = mime_types[extname] print "Content-Type: #{mime_type}\n" @@ -160,7 +160,14 @@ if (files = attach_page_files).size > 0 s << %Q!<p>#{attach_files_label}: \n! files.each do |file_name| - s << %Q! [#{attach_anchor(file_name)}] ! + f = file_name.unescape + case $charset + when 'EUC-JP' + f = file_name.unescape.to_euc + when 'Shift_JIS' + f = file_name.unescape.to_sjis + end + s << %Q! [#{attach_anchor(f)}] ! end s << "</p>\n" end @@ -178,7 +185,14 @@ <p>#{attach_files_label}: ! files.each do |file_name| - s << %Q! [<input type="checkbox" name="file_#{file_name}">#{attach_anchor(file_name)}] \n! + f = file_name.unescape + case $charset + when 'EUC-JP' + f = file_name.unescape.to_euc + when 'Shift_JIS' + f = file_name.unescape.to_sjis + end + s << %Q! [<input type="checkbox" name="file_#{file_name}">#{attach_anchor(f)}] \n! end s << %Q!<input type="submit" name="detach" value="#{detach_upload_label}">\n</p>\n</form>\n! end @@ -186,20 +200,26 @@ end -add_body_leave_proc { - s = case @options['attach.form'] - when 'view', 'both' - attach_form(attach_show_page_files) - else - '' - end -} +add_body_leave_proc(Proc.new do + begin + s = case @options['attach.form'] + when 'view', 'both' + attach_form(attach_show_page_files) + else + '' + end + rescue Exception + end +end) -add_form_proc { - s = case @options['attach.form'] - when 'edit', 'both' - attach_form(attach_show_page_files_checkbox) - else - '' - end -} +add_form_proc(Proc.new do + begin + s = case @options['attach.form'] + when 'edit', 'both' + attach_form(attach_show_page_files_checkbox) + else + '' + end + rescue Exception + end +end) -------------- next part -------------- --- hiki/command.rb 24 Aug 2003 12:03:21 -0000 1.4.2.37 +++ hiki/command.rb 11 Nov 2003 11:50:13 -0000 @@ -286,6 +286,7 @@ if p = @params['password'][0] pass_check = true if $password.size == 0 || p.crypt( $password ) == $password end + pass_check = true unles****@db*****_frozen?(page) subject = '' if text.size == 0 && pass_check -------------- next part -------------- --- misc/plugin/cvs.rb 12 Aug 2003 06:34:24 -0000 1.1.2.1 +++ misc/plugin/cvs.rb 11 Nov 2003 11:48:25 -0000 @@ -4,12 +4,12 @@ #===== update_proc add_update_proc { - cvs_commit if $cvsroot + cvs_commit if $repos_root } #===== delete_proc add_delete_proc { - cvs_delete if $cvsroot + cvs_delete if $repos_root } #----- cvs commit on updating @@ -17,8 +17,8 @@ oldpwd = Dir.pwd begin Dir.chdir( "#{$data_path}/text" ) - system( "cvs -d #{$cvsroot} add -- #{@page.escape} > /dev/null 2>&1" ) - system( "cvs -d #{$cvsroot} ci -m '#{ENV['REMOTE_ADDR']} - #{ENV['REMOTE_HOST']}' > /dev/null 2>&1" ) + system( "cvs -d #{$repos_root} add -- #{@page.escape} > /dev/null 2>&1" ) + system( "cvs -d #{$repos_root} ci -m '#{ENV['REMOTE_ADDR']} - #{ENV['REMOTE_HOST']}' > /dev/null 2>&1" ) ensure Dir.chdir( oldpwd ) end @@ -29,8 +29,8 @@ oldpwd = Dir.pwd begin Dir.chdir( "#{$data_path}/text" ) - system( "cvs -d #{$cvsroot} remove -- #{@page.escape} > /dev/null 2>&1" ) - system( "cvs -d #{$cvsroot} ci -m '#{ENV['REMOTE_ADDR']} - #{ENV['REMOTE_HOST']}' > /dev/null 2>&1" ) + system( "cvs -d #{$repos_root} remove -- #{@page.escape} > /dev/null 2>&1" ) + system( "cvs -d #{$repos_root} ci -m '#{ENV['REMOTE_ADDR']} - #{ENV['REMOTE_HOST']}' > /dev/null 2>&1" ) ensure Dir.chdir( oldpwd ) end -------------- next part -------------- --- plugin/00default.rb 15 Oct 2003 22:31:30 -0000 1.3.2.32 +++ plugin/00default.rb 11 Nov 2003 11:45:25 -0000 @@ -112,6 +112,9 @@ EOS s << <<EOS if @command != 'view' <meta name="ROBOTS" content="NOINDEX,NOFOLLOW"> + <meta http-equiv="pragma" content="no-cache"> + <meta http-equiv="cache-control" content="no-cache"> + <meta http-equiv="expires" content="0"> EOS s end