/[pub]/suikawiki/script/default/suikawiki-config.ph
Suika

Contents of /suikawiki/script/default/suikawiki-config.ph

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.15 - (hide annotations) (download)
Sat Mar 13 13:17:47 2004 UTC (20 years, 8 months ago) by wakaba
Branch: MAIN
Changes since 1.14: +8 -1 lines
*** empty log message ***

1 wakaba 1.10 =head1 NAME
2    
3     suikawiki-config.ph - SuikaWiki: Configuration for SuikaWiki HTTP CGI Driver
4    
5     =head1 DESCRIPTION
6    
7     This is a configuration file for SuikaWiki Driver for HTTP CGI Script
8     (SWHCS). Basic options such as WikiDB directory mapping and
9     special purpose WikiPage names can be customized with this file.
10    
11     More complex customizing, e.g. modifying navigation bar or
12     adding new mode, is also possible by config.ph (generated from
13     config.wp2) and WikiPlugin modules. For more information,
14     see <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>.
15    
16     This file is part of SuikaWiki.
17    
18     =cut
19    
20     package wiki::driver::http;
21 w 1.1 use strict;
22 wakaba 1.15
23     ## These lines should be removed after utf8 support
24     BEGIN {
25     $Message::Util::Formatter::Base::Token = qr/[\w._+\x80-\xFF-]+/;
26     require Message::Util::Formatter::Base;
27     }
28    
29 wakaba 1.14 use Message::Util::Error;
30 wakaba 1.4
31 wakaba 1.14 push our @Config, sub ($) {
32 wakaba 1.10 my $WIKI = shift;
33 wakaba 1.12 use Cwd qw(abs_path);
34 wakaba 1.10
35     ## -- Filesystem path mapping
36 wakaba 1.6 for (
37 wakaba 1.10 [db__cache__dir => q"./wikidata/lock/"],
38 wakaba 1.14 [db__cache_struct__file => q"./wikidata/lock/struct.db"],
39 wakaba 1.12 [db__content__dir => q"./wikidata/page/"],
40 wakaba 1.6 [db__content__error_log => q"./wikidata/log/db-content.log"],
41 wakaba 1.12 [db__bdb__home_dir => q"./wikidata/lock/"],
42     [db__bdb__log_dir => q"./wikidata/log/bdb/"],
43     [db__bdb__log_file => q"./wikidata/log/bdb.log"],
44     [db__bdb__temp_dir => q"./wikidata/lock/"],
45 wakaba 1.6 [db__lock__dir => q"./wikidata/lock/"],
46 wakaba 1.12 [db__lock__log_file => q"./wikidata/log/lock.log"],
47     [db__log__dir => q"./wikidata/log/"],
48     [db__temp__dir => q"./wikidata/lock/"],
49 wakaba 1.6 ) {
50 wakaba 1.12 ## On system that does not set current directory as main script
51     ## directory, you should specify it instead of using "abs_path".
52     $WIKI->{config}->{path_to}->{$_->[0]} = abs_path $_->[1];
53 wakaba 1.6 }
54    
55 wakaba 1.10 ## -- WikiPlugin
56 wakaba 1.6 push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
57 wakaba 1.8 my $wiki = shift;
58 wakaba 1.10
59     ## Installed plugin modules
60 wakaba 1.8 $wiki->{plugin}->load_directory (qw(
61     lib/SuikaWiki/Plugin/
62     misc/plugins/
63 wakaba 1.10 misc/plugins/form/
64 wakaba 1.9 misc/plugins/format/
65 wakaba 1.10 misc/plugins/link/
66 wakaba 1.8 misc/plugins/view/
67     ));
68 wakaba 1.10
69     ## Configuration file as pseudo-plugin module
70 wakaba 1.6 require 'wikidata/config.ph';
71     };
72    
73 wakaba 1.10 ## -- WikiDatabase: Mapping logical to physical
74 wakaba 1.6 push @{$WIKI->{event}->{database_loaded}}, sub {
75 wakaba 1.10 my $wiki = shift;
76    
77 wakaba 1.6 ## Main content
78 wakaba 1.10 $wiki->{db}->_set_prop_db (content => {-db_open => sub {
79 wakaba 1.6 require SuikaWiki::DB::FileSystem::YukiWikiDBNS;
80     SuikaWiki::DB::FileSystem::YukiWikiDBNS->new
81 wakaba 1.10 (directory => $wiki->{config}->{path_to}->{db__content__dir},
82     logfile => $wiki->{config}->{path_to}->{db__content__error_log},
83 wakaba 1.6 suffix => '.txt',
84 wakaba 1.10 -lock => $wiki->{var}->{db}->{lock_prop}->('content'));
85 wakaba 1.8 }, -db_close => sub {
86     my %opt = @_;
87     $opt{prop_info}->{-db}->close;
88     delete $opt{prop_info}->{-db};
89     }});
90 wakaba 1.6
91     ## Last modified
92 wakaba 1.10 $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
93 wakaba 1.6 require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
94     SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
95 wakaba 1.10 (directory => $wiki->{config}->{path_to}->{db__content__dir},
96     -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
97 wakaba 1.8 }, -prop => 'last_modified', -db_close => sub {
98     my %opt = @_;
99     $opt{prop_info}->{-db}->close;
100     delete $opt{prop_info}->{-db};
101     }});
102 wakaba 1.10
103 wakaba 1.12 ## Cache DBs
104 wakaba 1.10 require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
105     my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
106     (directory => $wiki->{config}->{path_to}->{db__cache__dir});
107     $wiki->{db}->_set_prop_db (m__search_result =>
108     {-db => $cachedb, -prop => 'search_result', -db_close => sub {
109     my %opt = @_;
110     $opt{prop_info}->{-db}->close;
111     delete $opt{prop_info}->{-db};
112     }});
113     $wiki->{db}->_set_prop_db (wpp__headsummary =>
114     {-db => $cachedb, -prop => 'headsummary', -db_close => sub {
115     my %opt = @_;
116     $opt{prop_info}->{-db}->close;
117     delete $opt{prop_info}->{-db};
118     }});
119 wakaba 1.14 $wiki->{db}->_set_prop_db (ref__item_template =>
120     {-db => $cachedb, -prop => 'refereritem', -db_close => sub {
121     my %opt = @_;
122     $opt{prop_info}->{-db}->close;
123     delete $opt{prop_info}->{-db};
124     }});
125 wakaba 1.10
126 wakaba 1.12 ## Berkely DB Environment Preparation
127     use BerkeleyDB;
128     my $bdbenv = new BerkeleyDB::Env
129     -Home => $wiki->{config}->{path_to}->{db__bdb__home_dir},
130     -Config => {
131     DB_DATA_DIR => $wiki->{config}->{path_to}->{db__content__dir},
132     DB_LOG_DIR => $wiki->{config}->{path_to}->{db__bdb__log_dir},
133     DB_TMP_DIR => $wiki->{config}->{path_to}->{db__bdb__temp_dir},
134     },
135     -ErrFile => $wiki->{config}->{path_to}->{db__bdb__log_file},
136     -Flags => DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_MPOOL,
137     -Verbose => $wiki->{config}->{debug}->{db};
138 wakaba 1.14
139     $wiki->{db}->_set_prop_db (content__structured => {-db_open => sub {
140     require SuikaWiki::DB::Hash;
141     new SuikaWiki::DB::Hash constructor => sub {
142     use MLDBM qw(BerkeleyDB::Hash);# Storable);
143     tie my %mldb, 'MLDBM',
144     -Filename => $wiki->{config}->{path_to}
145     ->{db__cache_struct__file},
146     -Env => $bdbenv,
147     -Flags => DB_CREATE,
148     -Mode => 0644;
149     \%mldb;
150     };
151     }});
152 wakaba 1.12
153     ## Referer Database (See Referer plugin module)
154     $wiki->{db}->_set_prop_db (referer => {-db_open => sub {
155     require SuikaWiki::DB::Hash;
156     new SuikaWiki::DB::Hash constructor => sub {
157     tie my %db, 'BerkeleyDB::Hash',
158     -Filename => 'referer.db',
159     -Env => $bdbenv,
160     -Flags => DB_CREATE,
161     -Mode => 0644;
162     \%db;
163     };
164     }});
165    
166     ## HTTP Request Logging Database (See RequestLog plugin module)
167     $wiki->{db}->_set_prop_db (log__http_request => {-db_open => sub {
168     require SuikaWiki::DB::Hash;
169     new SuikaWiki::DB::Hash constructor => sub {
170     tie my %db, 'BerkeleyDB::Hash',
171     -Filename => 'http-request-log.db',
172     -Env => $bdbenv,
173     -Flags => DB_CREATE,
174     -Mode => 0644;
175     \%db;
176     };
177     }});
178    
179 wakaba 1.10 ## Additional WikiDB properties should be defined here
180     # ...
181 wakaba 1.6 };
182    
183 wakaba 1.12 push @{$WIKI->{event}->{input_close}}, sub {
184     my ($wiki, $event) = @_;
185 wakaba 1.13 try {
186     SuikaWiki::Plugin->module_package ('Referer')
187 wakaba 1.12 ->add_referer (wiki => $wiki,
188     uri => $wiki->{input}->meta_variable
189     ('HTTP_REFERER'));
190 wakaba 1.13 } catch SuikaWiki::Plugin::error with {
191     my $err = shift;
192     $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
193     };
194     try {
195     SuikaWiki::Plugin->module_package ('RequestLog')
196 wakaba 1.12 ->http_request_log (wiki => $wiki,
197     prop => 'log__http_request');
198 wakaba 1.13 } catch SuikaWiki::Plugin::error with {
199     my $err = shift;
200     $err->raise unless $err->{-type} eq 'PLUGIN_NOT_FOUND';
201     };
202 wakaba 1.12 };
203    
204 wakaba 1.10 ## -- WikiName of special purpose WikiPages
205 wakaba 1.8 $WIKI->{config}->{page} = {
206 wakaba 1.11 Default => $WIKI->name ([qw/HomePage/]),
207     InterWikiName => $WIKI->name ([qw/Wiki InterWikiName/]),
208     NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
209     'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
210 wakaba 1.8 };
211    
212 wakaba 1.10 ## -- WikiNamespace constants
213 wakaba 1.11 $WIKI->{config}->{name}->{space} = {
214     separator => '//',
215     separator_reg => qr#\s*//\s*#,
216     self => '.',
217     parent => '..',
218     };
219 wakaba 1.7
220 wakaba 1.10 ## -- Default character codes
221 wakaba 1.11 $WIKI->{config}->{charset} = {
222     ## Internal code - MUST be ASCII + 8bit coding scheme
223     internal => 'euc-jp',
224     ## Default output code
225     output => 'iso-2022-jp',
226     ## "query" part in URI reference
227     uri_query => '', # auto-detected
228     uri_query_encode => 'euc-jp', ## For compatibility w/ SuikaWiki 2
229     uri_param => '', # auto-detected
230     uri_param_encode => 'euc-jp', ## For compatibility w/ SuikaWiki 2
231     ## PATH_INFO part in URI reference
232     uri_path_info => 'x-utf-8-10646', ## Reserved for future use
233     ## Fragment identifier in URI reference
234     uri_fragment => 'x-punycode', ## Reserved for possible future use
235     };
236 wakaba 1.7
237 wakaba 1.10 ## -- Expires duration templates
238 wakaba 1.6 $WIKI->{config}->{entity}->{expires} = {
239 wakaba 1.7 edit => {delta => 60},
240     view => {delta => 2*3600},
241 wakaba 1.6 lm_flaged => {delta => 30*24*3600},
242 wakaba 1.11 stylesheet => {delta => 30*24*3600},
243     error => {delta => 60},
244     };
245    
246     ## -- Debug mode
247     $WIKI->{config}->{debug} = {
248 wakaba 1.13 general => 0,
249 wakaba 1.11 db => 0,
250 wakaba 1.12 format => 0,
251 wakaba 1.13 view => 0,
252 wakaba 1.6 };
253 wakaba 1.4
254 wakaba 1.14 };
255 wakaba 1.8
256 wakaba 1.10 =head1 SEE ALSO
257 w 1.3
258 wakaba 1.10 C<lib/suikawiki.pl>, C<wiki.cgi>,
259     <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
260     <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
261 w 1.3
262     =head1 LICENSE
263    
264 wakaba 1.10 Copyright 2003-2004 Wakaba <w@suika.fam.cx>. All rights reserved.
265 w 1.3
266     This program is free software; you can redistribute it and/or
267     modify it under the same terms as Perl itself.
268    
269     =cut
270 w 1.1
271 wakaba 1.15 1; # $Date: 2004/03/12 04:56:00 $

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24