[Hiki-dev:00461] some patches (attach.rb, command.rb, cvs.rb, 00default.rb)

Back to archive index

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


Hiki-dev メーリングリストの案内
Back to archive index