せっかくRuby勉強しはじめたのだからなにか書いてみようじゃないかという企画.
------------
少し前までは,トップページにPerlの掲示板スクリプトを置いてたのだけど,残念ながらUnicodeに対応していなかったのでLinux移行時に外した.でも,ないとたまに(半年に1回くらい)さびしいので,Rubyで書いてみた.
メインプログラム
[ruby]
#!/usr/bin/ruby -Ku
#####################################################
#
# ちり紙
# 2009-01-02 v1.00
# https://team2ch.org/
#
######################################################
require 'cgi'
HTML_LOCATION = './index.cgi' #
hatugen = CGI.escapeHTML( input["msg"].chomp )if ( onamae.length > MAX_ONAMAE ) or ( hatugen.length > MAX_HATUGEN ) then
#長すぎるのは単にリダイレクト
puts( "Location: #{HTML_LOCATION}nn" )
elsif ( onamae == '' ) or ( hatugen == '' ) then
#空白のみも単にリダイレクト
puts( "Location: #{HTML_LOCATION}nn" )
elsif ( /(.*?)[ぁ-んァ-ヴ一-龠](.*?)/u =~ onamae ) or ( /(.*?)[ぁ-んァ-ヴ一-龠](.*?)/u =~ hatugen ) then
#日本語がどちらかに含まれていれば,ファイルに書き込み(スパム対策)
new_line = sprintf( "#{onamae} : #{hatugen} [ #{Time.now} ]
n" ) #1行の形に整形する
File.open( LOG_FILE, 'r+b' ){|f|
lines = f.readlines
lines.unshift( new_line ) #ファイルの頭に新しい行を加える
f.rewind
lines.each do |line|
f.puts( line )
end
}
puts( "Location: #{HTML_LOCATION}nn" )
else
#日本語が含まれてないときも,単にリダイレクト
puts( "Location: #{HTML_LOCATION}nn" )
end
[/ruby]
あとはlog.txtを適当に埋め込めばよい.
ソラオチはeRubyでrequireした.