HIDAKA Takahiro <cv8t-hdk@...-net.or.jp> さん writes.
> ===============================================================
> #!/usr/local/bin/ruby
>
> $:.unshift('../rwiki/')
> $:.unshift('../rwiki/lib/')
>
> RWIKI_URI = 'druby://localhost:8470'
>
> ...
>
> print pg.body_html(env)
> ===============================================================
これは期待通りに動きました。
> で、これをふくらませて、簡単な RWiki → HTML 変換を
> つくっちゃいました。
>
> http://www.asahi-net.or.jp/~cv8t-hdk/archives/scripts/rwiki2html.rb
どうも template をうまく読み込んで加工できないというメッセージが出て、と
まってしまいます。で、スクリプトは
===============================================================
#!/usr/local/bin/ruby
$:.unshift('./rwiki/')
$:.unshift('./rwiki/lib/')
RWIKI_URI = 'druby://localhost:8470'
require 'rw-lib'
require 'drb/drb'
require 'kconv'
require 'cgi'
DRb.start_service()
rwiki = DRbObject.new( nil, RWIKI_URI )
env = Hash.new
env[ 'ref_name' ] = Proc.new {|cmd,name| CGI.escape(name) }
File.open("template.html", "r") do | fp |
$template = fp.read
end
pgname = ARGV[0]
pgtoc = rwiki.page(pgname)
pgtoc.links.each do | link |
pg = rwiki.page(link)
@html = $template.sub(/\n/, "\n")
File.open(link + ".html", "w") do | fp |
@html.sub!(/<\%\s+@@title\s+\%>/, link)
@html.sub!(/<\%\s+@@body\s+\%>/, pg.body_html(env))
fp.print @html
end
end
===============================================================
のようにし、template.html を
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title><% @@title %></title>
<link rel=stylesheet type="text/css" href="rwiki.css">
</head>
<body bgcolor="#ffffff">
<% @@body %>
</body>
</html>
のようにして取りあえず急場をしのぎました。
また、cgi でファイルをアップロードする件ですが、
ffileman 'Web Based File & Directory Manager'
-> http://www.firidin.com/perl
というものを見つけ、セットしてみると、うまくいきました。SSL で保護された
状態でのみ使えるように、
unless( $referer =~ /^https*:\/\/(www\.)*$ENV{'SERVER_NAME'}$scriptname/ )
を(ffileman.cgi, ffileman_upload.cgi の 2 箇所)
unless( $referer =~ /^https:\/\/(www\.)*$ENV{'SERVER_NAME'}$scriptname/ )
としました。また文字コードが化けるので、ffileman_english.cgi を
$charset = "shift_jis";
に変更しました。もう少し使ってみて、セキュリティの具合とか確認したいと思
いますが、かなりいい感じです。複数ファイルやフォルダごとのアップロードが
ちと面倒なので、Ruby から Tcl/Tk を使って GUI 化したインターフェースでも
書き、これらが実現できたとしたらいうことはないです。
--
本田博通(閑舎)
Hiromichi Honda <raku@...>