/[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.19 - (hide annotations) (download)
Sat May 1 04:03:00 2004 UTC (20 years, 6 months ago) by wakaba
Branch: MAIN
Changes since 1.18: +1 -22 lines
(input_close): Removed

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 wakaba 1.17 ## 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     use Message::Util::Error;
29    
30     use Message::Util::QName::General [q<ExpandedURI>], {
31     'media-type' => q<http://suika.fam.cx/~wakaba/-temp/2004/04/24/mt#>,
32     };
33    
34 wakaba 1.14 push our @Config, sub ($) {
35 wakaba 1.10 my $WIKI = shift;
36 wakaba 1.18 use FindBin q($Bin);
37     use File::Spec;
38 wakaba 1.10
39     ## -- Filesystem path mapping
40 wakaba 1.6 for (
41 wakaba 1.17 [db__cache__dir => q"./wikidata/cache/"],
42     [db__cache_struct__file => q"./wikidata/cache/struct.db"],
43 wakaba 1.12 [db__content__dir => q"./wikidata/page/"],
44 wakaba 1.6 [db__content__error_log => q"./wikidata/log/db-content.log"],
45 wakaba 1.12 [db__bdb__home_dir => q"./wikidata/lock/"],
46     [db__bdb__log_dir => q"./wikidata/log/bdb/"],
47     [db__bdb__log_file => q"./wikidata/log/bdb.log"],
48     [db__bdb__temp_dir => q"./wikidata/lock/"],
49 wakaba 1.6 [db__lock__dir => q"./wikidata/lock/"],
50 wakaba 1.12 [db__lock__log_file => q"./wikidata/log/lock.log"],
51     [db__log__dir => q"./wikidata/log/"],
52     [db__temp__dir => q"./wikidata/lock/"],
53 wakaba 1.16 # [namazu__index_dir => q"/var/namazu/index/wiki"],
54 wakaba 1.6 ) {
55 wakaba 1.12 ## On system that does not set current directory as main script
56     ## directory, you should specify it instead of using "abs_path".
57 wakaba 1.18 $WIKI->{config}->{path_to}->{$_->[0]} = File::Spec->catfile ($Bin, $_->[1]);
58 wakaba 1.6 }
59    
60 wakaba 1.16 =begin comment
61    
62     ## -- Namazu URI Mapping (See SuikaWiki:SuikaWiki//Namazu) --
63     $WIKI->{config}->{nmz__uri_to_uri} = sub {
64     my ($nmzuri, %opt) = @_;
65     if ($nmzuri =~ s!^\Q$opt{o}->{wiki}->{config}->{path_to}->{db__content__dir}\E/*!!o) {
66     $nmzuri =~ s/\.txt$//;
67     return $opt{o}->{wiki}->uri_reference
68     (page => $opt{o}->{wiki}->name ([
69     map {s/([0-9A-F][0-9A-F])/pack 'C', hex $1/ge; $_}
70     split m!\.ns/!, $nmzuri
71     ]), base => 1);
72     } else {
73     return ($nmzuri, $nmzuri);
74     }
75     };
76    
77     =end comment
78    
79 wakaba 1.18 =cut
80    
81 wakaba 1.10 ## -- WikiPlugin
82 wakaba 1.6 push @{$WIKI->{event}->{plugin_manager_loaded}}, sub {
83 wakaba 1.8 my $wiki = shift;
84 wakaba 1.10
85     ## Installed plugin modules
86 wakaba 1.8 $wiki->{plugin}->load_directory (qw(
87     lib/SuikaWiki/Plugin/
88     misc/plugins/
89 wakaba 1.10 misc/plugins/form/
90 wakaba 1.9 misc/plugins/format/
91 wakaba 1.10 misc/plugins/link/
92 wakaba 1.8 misc/plugins/view/
93     ));
94 wakaba 1.10
95     ## Configuration file as pseudo-plugin module
96 wakaba 1.6 require 'wikidata/config.ph';
97     };
98    
99 wakaba 1.10 ## -- WikiDatabase: Mapping logical to physical
100 wakaba 1.6 push @{$WIKI->{event}->{database_loaded}}, sub {
101 wakaba 1.10 my $wiki = shift;
102    
103 wakaba 1.6 ## Main content
104 wakaba 1.10 $wiki->{db}->_set_prop_db (content => {-db_open => sub {
105 wakaba 1.17 require SuikaWiki::DB::FileSystem::LeafFile;
106     SuikaWiki::DB::FileSystem::LeafFile->new
107     (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
108     directory_suffix => '.ns',
109     file_suffix => '.txt',
110     root_key => $wiki->{config}->{page}->{Default},
111 wakaba 1.18 -lock => $wiki->{var}->{db}->{lock_prop}->('content'));
112 wakaba 1.17 }, -db_close => sub {
113     my %opt = @_;
114     $opt{prop_info}->{-db}->close;
115     delete $opt{prop_info}->{-db};
116     }});
117    
118     ## Properties
119     $wiki->{db}->_set_prop_db (content_prop => {-db_open => sub {
120     require SuikaWiki::DB::FileSystem::LeafProp;
121     SuikaWiki::DB::FileSystem::LeafProp->new
122     (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
123     directory_suffix => '.ns',
124     file_suffix => '.prop',
125     root_key => $wiki->{config}->{page}->{Default},
126 wakaba 1.18 -lock => $wiki->{var}->{db}->{lock_prop}->('content_prop'));
127 wakaba 1.8 }, -db_close => sub {
128     my %opt = @_;
129     $opt{prop_info}->{-db}->close;
130     delete $opt{prop_info}->{-db};
131     }});
132 wakaba 1.6
133     ## Last modified
134 wakaba 1.10 $wiki->{db}->_set_prop_db (lastmodified => {-db_open => sub {
135 wakaba 1.6 require SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09;
136     SuikaWiki::DB::FileSystem::SuikaWikiMetaInfo09->new
137 wakaba 1.10 (directory => $wiki->{config}->{path_to}->{db__content__dir},
138     -lock => $wiki->{var}->{db}->{lock_prop}->('lastmodified'));
139 wakaba 1.8 }, -prop => 'last_modified', -db_close => sub {
140     my %opt = @_;
141     $opt{prop_info}->{-db}->close;
142     delete $opt{prop_info}->{-db};
143     }});
144 wakaba 1.10
145 wakaba 1.12 ## Cache DBs
146 wakaba 1.10 require SuikaWiki::DB::FileSystem::SuikaWikiCache09;
147     my $cachedb = SuikaWiki::DB::FileSystem::SuikaWikiCache09->new
148 wakaba 1.16 (directory => $wiki->{config}->{path_to}->{db__cache__dir},
149     expires => 86400 * 3, removes => 86400 * 3); # 3 days
150 wakaba 1.10 $wiki->{db}->_set_prop_db (m__search_result =>
151     {-db => $cachedb, -prop => 'search_result', -db_close => sub {
152     my %opt = @_;
153     $opt{prop_info}->{-db}->close;
154     delete $opt{prop_info}->{-db};
155     }});
156     $wiki->{db}->_set_prop_db (wpp__headsummary =>
157     {-db => $cachedb, -prop => 'headsummary', -db_close => sub {
158     my %opt = @_;
159     $opt{prop_info}->{-db}->close;
160     delete $opt{prop_info}->{-db};
161     }});
162 wakaba 1.14 $wiki->{db}->_set_prop_db (ref__item_template =>
163     {-db => $cachedb, -prop => 'refereritem', -db_close => sub {
164     my %opt = @_;
165     $opt{prop_info}->{-db}->close;
166     delete $opt{prop_info}->{-db};
167     }});
168 wakaba 1.10
169 wakaba 1.12 ## Referer Database (See Referer plugin module)
170     $wiki->{db}->_set_prop_db (referer => {-db_open => sub {
171 wakaba 1.17 require SuikaWiki::DB::FileSystem::Count;
172     SuikaWiki::DB::FileSystem::Count->new
173     (base_directory => $wiki->{config}->{path_to}->{db__content__dir},
174     directory_suffix => '.ns',
175     file_suffix => '.ref',
176     root_key => $wiki->{config}->{page}->{Default},
177     auto_mkdir => 0,
178     -lock => $wiki->{var}->{db}->{lock_prop}->('referer'));
179     }, -db_close => sub {
180     my %opt = @_;
181     $opt{prop_info}->{-db}->close;
182     delete $opt{prop_info}->{-db};
183 wakaba 1.12 }});
184    
185 wakaba 1.10 ## Additional WikiDB properties should be defined here
186     # ...
187 wakaba 1.6 };
188    
189 wakaba 1.10 ## -- WikiName of special purpose WikiPages
190 wakaba 1.8 $WIKI->{config}->{page} = {
191 wakaba 1.11 Default => $WIKI->name ([qw/HomePage/]),
192     InterWikiName => $WIKI->name ([qw/Wiki InterWikiName/]),
193     NewPageTemplate => $WIKI->name ([qw/Wiki NewPageTemplate/]),
194     'StyleSheetList(text/html)' => $WIKI->name ([qw<Wiki Style List text/html>]),
195 wakaba 1.8 };
196    
197 wakaba 1.10 ## -- WikiNamespace constants
198 wakaba 1.11 $WIKI->{config}->{name}->{space} = {
199     separator => '//',
200     separator_reg => qr#\s*//\s*#,
201     self => '.',
202     parent => '..',
203 wakaba 1.17 root => '//',
204 wakaba 1.11 };
205 wakaba 1.7
206 wakaba 1.10 ## -- Default character codes
207 wakaba 1.11 $WIKI->{config}->{charset} = {
208     ## Internal code - MUST be ASCII + 8bit coding scheme
209     internal => 'euc-jp',
210     ## Default output code
211     output => 'iso-2022-jp',
212     ## "query" part in URI reference
213     uri_query => '', # auto-detected
214     uri_query_encode => 'euc-jp', ## For compatibility w/ SuikaWiki 2
215     uri_param => '', # auto-detected
216     uri_param_encode => 'euc-jp', ## For compatibility w/ SuikaWiki 2
217     ## PATH_INFO part in URI reference
218     uri_path_info => 'x-utf-8-10646', ## Reserved for future use
219     ## Fragment identifier in URI reference
220     uri_fragment => 'x-punycode', ## Reserved for possible future use
221     };
222 wakaba 1.7
223 wakaba 1.17 ## -- User option for media types
224     $WIKI->{config}->{ExpandedURI q<media-type:accept-media-type>} = {
225     q<IMT:text/css##> => 1,
226     q<IMT:text/plain##> => 1,
227     q<IMT:text/x-suikawiki;version="0.9"##> => 1,
228     q<IMT:application/x.suikawiki.config;version="2.0"##> => 1,
229     };
230    
231 wakaba 1.10 ## -- Expires duration templates
232 wakaba 1.6 $WIKI->{config}->{entity}->{expires} = {
233 wakaba 1.7 edit => {delta => 60},
234     view => {delta => 2*3600},
235 wakaba 1.17 list => {delta => 60},
236 wakaba 1.6 lm_flaged => {delta => 30*24*3600},
237 wakaba 1.11 stylesheet => {delta => 30*24*3600},
238     error => {delta => 60},
239     };
240    
241     ## -- Debug mode
242     $WIKI->{config}->{debug} = {
243 wakaba 1.13 general => 0,
244 wakaba 1.11 db => 0,
245 wakaba 1.12 format => 0,
246 wakaba 1.13 view => 0,
247 wakaba 1.6 };
248 wakaba 1.4
249 wakaba 1.14 };
250 wakaba 1.8
251 wakaba 1.10 =head1 SEE ALSO
252 w 1.3
253 wakaba 1.10 C<lib/suikawiki.pl>, C<wiki.cgi>,
254     <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SuikaWiki>,
255     <http://suika.fam.cx/~wakaba/-temp/wiki/wiki?SWHCS>
256 w 1.3
257     =head1 LICENSE
258    
259 wakaba 1.10 Copyright 2003-2004 Wakaba <w@suika.fam.cx>. All rights reserved.
260 w 1.3
261     This program is free software; you can redistribute it and/or
262     modify it under the same terms as Perl itself.
263    
264     =cut
265 w 1.1
266 wakaba 1.19 1; # $Date: 2004/04/30 06:04:17 $

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24