/[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.13 - (hide annotations) (download)
Thu Mar 11 10:09:41 2004 UTC (20 years, 8 months ago) by wakaba
Branch: MAIN
Changes since 1.12: +15 -5 lines
Don't raise error even Referer or RequestLog module not loaded

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24