1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
#! /usr/bin/ruby1.6
# Copyritght (c) 2002 TANIGUCHI Takaki
# This program is distributed under the GNU GPL 2 or later.
load ('aswiki.conf')
require 'aswiki/config'
require 'cgi'
require 'aswiki/handler'
require 'aswiki/repository'
require 'aswiki/page'
require 'aswiki/exception'
require 'aswiki/pagedata'
require 'aswiki/cgi'
require 'aswiki/node'
if $USEATTACH
require 'aswiki/attachdb'
end
require 'digest/md5'
require 'amrita/template'
require 'amrita/format'
if $0 == __FILE__ or defined?(MOD_RUBY)
include AsWiki::Util
Dir::chdir $BASEDIR
Amrita::TemplateFileWithCache::set_cache_dir($DIR_CACHE)
AsWiki::Node::load_parts_template
repository = AsWiki::Repository.new
$plugin_list.each{|p|
require "#$DIR_PLUGIN/#{p}".untaint
}
cgi = CGI::new # XXX
c = (cgi.value('c')[0] or 'v')
name = ((cgi.path_info and cgi.path_info[1..-1]) or
cgi.value('p')[0] or $TOPPAGENAME)
begin
begin
if AsWiki::HandlerTable.key?(c)
AsWiki::HandlerTable[c].new(cgi, name)
else
raise AsWiki::RuntimeError, "Unknown Command or Not Active Feature '#{c}'\n"
end
rescue AsWiki::EditPageCall, AsWiki::SaveConflict
AsWiki::HandlerTable[$!.class].new(cgi, $!)
end
rescue AsWiki::AsWikiError
pd = AsWiki::PageData.new($!.class.to_s)
pd.body = Amrita::pre { Amrita::e(:code) { $!.message + "\n"} }
cgi.out({'Status' => '200 OK', 'Content-Type' => 'text/html'}){
AsWiki::Page.new('Error', pd).to_s
}
rescue Exception
pd = AsWiki::PageData.new('Program Error: ' + $!.class.to_s)
pd.body = Amrita::pre { Amrita::e(:code) {
$!.to_s + "\n" + $!.backtrace.join("\n") # XXX pre
}
}
cgi.out({'Status' => '200 OK', 'Content-Type' => 'text/html'}){
AsWiki::Page.new('Error', pd).to_s
}
end
end
|